我在数据帧列表中添加多个数据帧时遇到问题。我的目标是根据另一个列表中的条件从数据帧列表中添加数据帧。
示例:假设我们有一个包含 10 个 Dataframe 的列表,DfList
和另一个名为 OrderList
的列表。
假设OrderList = [3, 2, 1, 4]
。
然后我想以形式获取4个数据帧的新列表[DfList(0) + DfList(1) + DfList(2), DfList(3) + DfList(4), DfList(5) ), DfList(6) + DfList(7) + DfList(8) + DfList(9)]
我尝试了几种方法来使用DataFrame.add
创建函数。最初,我希望可以使用 sum(DfList(0), DfList(1), DfList(2))
的形式来执行此操作,但很快就了解到 sum()
code> 似乎不支持 DataFrames。
我希望使用诸如 sum(DfList[0:2])
之类的东西并使 OrderList
累积,这样我就可以使用 sum(DfList[OrderList [i]:OrderList[i+1]])
但不断收到不支持的操作数类型
错误。
是否有一种我没有考虑的简单方法来做到这一点,或者是否有您建议的完全不同的方法?
编辑:我正在寻找的输出是另一个DataFrames列表,其中包含四个基于OrderList
(跨所有列)求和的DataFrames。三个DataFrames添加在一起用于第一个,两个用于第二个,一个第三个,第四个四个。
最佳答案
如果您有一个 DataFrame 列表,如您所说,您可以使用操作 sum(DfList[0:2])
,但您需要注意每个 DataFrame 中的列的顺序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]
。
关于python - 使用另一个列表从数据帧列表添加数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56228998/