我有两个数据框。第一个是元表,第二个是带有值的表。
df1:
Id Con Obs
A one Day
B one Night
C two Day
D two Night
df2:
Entry A B C D
val1 2 8 2 8
val2 4 6 4 6
val3 6 4 6 4
val4 8 2 8 2
val5 10 0 10 0
我希望根据条件(“条件”)列对df2求和。为此,我尝试对Con列进行分组,然后将其作为df2的列进行平均。
level = df1.groupby(['Con'])['Id'].agg(','.join)
level = level.reset_index()
这将产生以下结果:
Con Id
0 one A,B
1 two C,D
如何向df2提供此分组的ID,
Output:
Entry AB_sum CD_sum
val1 10 10
val2 10 10
val3 10 10
val4 10 10
val5 10 10
答案 0 :(得分:1)
您可以重命名列,并在新列名称上使用groupby:
BUILD SUCCESSFUL in 28s
25 actionable tasks: 3 executed, 6 from cache, 16 up-to-date
输出:
(df2.set_index('Entry')
.rename(columns=df1.set_index('Id')['Con'])
.groupby(level=0, axis=1).sum()
)