我无法在数据帧列表中添加几个数据帧。我的目标是根据其他列表中的条件从数据帧列表中添加数据帧。

示例:假设我们有一个包含10个数据帧的列表DfList和另一个名为OrderList的列表。

假设OrderList = [3, 2, 1, 4]

然后我想以[DfList(0) + DfList(1) + DfList(2), DfList(3) + DfList(4), DfList(5), DfList(6) + DfList(7) + DfList(8) + DfList(9)]的形式获取4个数据框的新列表

我尝试了几种方法来使用DataFrame.add创建函数。最初,我希望可以使用sum(DfList(0), DfList(1), DfList(2))形式执行此操作,但很快了解到Datacc似乎不支持sum()

我希望使用类似sum(DfList[0:2])的方法并使OrderList累积,因此我可以只使用sum(DfList[OrderList[i]:OrderList[i+1]])但仍会出现unsupported operand type错误。

有没有我不考虑的简便方法,还是您建议使用完全不同的方法?

编辑:我正在寻找的输出是另一个DataFrame列表,其中包含四个基于OrderList的汇总DataFrame(在所有列中。)三个DataFrames一起添加为第一个,两个为第二个,一个为第三个,四个为第四。

最佳答案

如果您有一个所说的DataFrames列表,则可以使用操作sum(DfList[0:2]),但是您需要注意列表中每个DataFrame中列的顺序,因为在添加DataFrames时会使用提供的顺序。列名不会相应地增加。如果需要,可以按其他question所示更改列的顺序。

此示例说明了问题:

import pandas as pd

df1 = pd.DataFrame({1:[1,23,4], 2:['x','y','z']})
df2 = pd.DataFrame({2:['x','y','z'], 1:[1,23,4]})

try:
    df1 + df2
except TypeError:
    print("Error")

df1 = pd.DataFrame({1:[1,23,4], 2:['x','y','z']})
df2 = pd.DataFrame({1:[1,23,4], 2:['x','y','z']})

#works fine
df1 + df2


另外,您在sum(DfList[OrderList[i]:OrderList[i+1]])中用于累积总和的逻辑也不正确。对于这种情况,OrderList也需要是累积的,并且要有一个从零开始的额外元素,因此您将拥有OrderList = [3, 2, 1, 4]来代替OrderList = [0, 3, 5, 6, 10]

08-24 17:28