使用另一个列表从数据框列表添加数据框

Adding Dataframes from a List of Dataframes using another List

我在数据帧列表中添加多个数据帧时遇到问题。我的目标是根据另一个列表中的条件从数据框列表中添加数据框。

示例:假设我们有一个包含 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 个 Dataframes 的新列表

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

我希望使用 sum(DfList[0:2]) 之类的东西并使 OrderList 累积,这样我就可以只使用 sum(DfList[OrderList[i]:OrderList[i+1]]),但不断出现 unsupported operand type 错误。

有没有一种我没有考虑过的简单方法,或者有没有你建议的完全不同的方法?

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

如果你有你所说的DataFrame列表,你可以使用操作sum(DfList[0:2]),但是你需要注意列表中每个DataFrame中列的顺序,因为提供的顺序是添加 DataFrame 时使用。添加不会根据列的名称发生。如果需要,可以更改列的顺序,如其他 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].