我有一个数据框

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


现在我正在使用循环。当运行大数据集时,它变得越来越慢。我想得到
典型的熊猫(或numpy)解决方案

最佳答案

您可以使用groupbysumreindex聚合在一起:

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

关于python - 如何在第一个数据帧中的另一个基于数据帧的列值中获取值的总和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40603285/

10-13 03:42