使用另一个列表从数据框列表添加数据框
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]
.
我在数据帧列表中添加多个数据帧时遇到问题。我的目标是根据另一个列表中的条件从数据框列表中添加数据框。
示例:假设我们有一个包含 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)]
我尝试了几种方法来使用 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]
.