首页 > 解决方案 > 如何迭代多个数据帧并将值添加到python中的新数据帧

问题描述

我有 4 个数据框:

df1 = pd.read_csv('values1.csv')
df2 = pd.read_csv('values2.csv')
df3 = pd.read_csv('values3.csv')
df4 = pd.read_csv('values4.csv')

他们每个人的结构如下: 在此处输入图像描述

我想创建一个新的数据框,以便它具有所有数据框中每个类别的聚合值。因此,新数据框应具有使用以下公式计算的值:-

Total['values'][0] = df1['values'][0] / (df1['values'][0] + df2['values'][0]  + df3['values'][0]  + df4['values'][0] )

像这样它应该为所有行生成值。有人可以帮帮我吗。

标签: pythonpandasdataframe

解决方案


首先将所有DataFrames 与concat并聚合sumSeries,然后将列转换category为索引 for Seriesfromdf1并除以Series.div

s = pd.concat([df1, df2, df3, df4]).groupby('category')['values'].sum()

out = df1.set_index('category')['values'].div(s).reset_index(name='total')

编辑:

s = pd.concat([df1, df2, df3, df4]).groupby('category')['values'].sum()
s1 = pd.concat([df1, df2]).groupby('category')['values'].sum()

out = s1.div(s2).reset_index(name='new')

推荐阅读