python - 使用另一个列表从数据帧列表添加数据帧

标签 python list dataframe addition

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

示例:假设我们有一个包含 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/

相关文章:

javascript - 当鼠标悬停在 HTML 表格单元格上时,我有哪些选项可以弹出日期列表?

Python矩阵索引

python - 将稀疏矩阵 (csc_matrix) 转换为 pandas 数据帧

r - 使用 apply() 函数更新 R 中数据帧的多列的因子水平

python - Tensorflow Restore() 缺少 1 个必需的位置参数 : 'save_path'

python - map 输出列表破坏了 map 结果

python - IMAP 获取正文太慢

python - 从列表中删除项目会导致列表变为 NoneType

scala - 我如何将这个丑陋的衬垫转换成干净的 scala 以便于理解?

python - 如何获得 DataFrame 中列值的组合结果?