我有一个数据框
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)解决方案
最佳答案
您可以使用groupby
将sum
与reindex
聚合在一起:
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/