如何在第一个数据帧中获取另一个基于数据帧的列值的总和?

时间:2016-11-15 06:19:12

标签: python pandas numpy dataframe

我有一个数据框

df = pd.DataFrame({'Color': 'Red Red Blue'.split(), 'Value': [100, 150, 50]})
>>> df
  Color  Value
0   Red    100
1   Red    150
2  Blue     50

我有第二个数据框dfmain

dfmain = pd.DataFrame({'Color': ["Red","Blue","Yellow"]})
>>> dfmain
    Color
0     Red
1    Blue
2  Yellow

我希望得到每种颜色总和的结果数据框 我的预期结果是

>>> result
    Color  sum
0     Red  250
1    Blue   50
2  Yellow    0

现在我正在使用循环。运行大数据集时速度变慢。我想得到 这个

的典型 pandas(或numpy)解决方案

1 个答案:

答案 0 :(得分:2)

您可以使用groupby汇总sumreindex

df = df.groupby('Color')['Value'].sum().reindex(dfmain.Color, fill_value=0).reset_index()
print (df)

    Color  Value
0     Red    250
1    Blue     50
2  Yellow      0