首页 > 解决方案 > 对来自多个 DataFrame 的列求和

问题描述

我有 N 个数据框,命名为 data1,data2...等
每个数据框都有两列“X”和“Y”。每个数据帧的长度都不一样。
我需要一个包含“X”列总和的新数据框。我刚刚尝试过类似的东西:

dataframesum = pd.DataFrame(0, index=np.arange(Some_number),columns = ['X']
for i in range(N):
dataframesum.add(globals()['Data%s'%i]['X'], fill_values = 0)

但它不起作用(我不确定 Some_number 的值应该是多少)并且我收到下一个错误:

NotImplementedError: fill_value 0 not supported

标签: pythonpandas

解决方案


您应该使用字典来存储任意数量的变量。

因此,假设您将数据帧存储在dfs = {1: df1, 2: df2, 3: df3...}.

然后,您可以通过以下方式连接它们pd.concat

df_concat = pd.concat(list(dfs.values()))

最后,您可以通过以下方式对列求和pd.DataFrame.sum

sums = df_concat.sum()

要利用矢量化操作,您应该避免手动for循环。此外,使用globals()是不好的做法,可以通过使用dictlist存储数据框来避免。


推荐阅读