基于两个数据框的列的条件平均值

时间:2020-11-04 14:39:30

标签: python pandas pandas-groupby

我有两个数据框。第一个是元表,第二个是带有值的表。

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

1 个答案:

答案 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()
)