我有一个充满数据的文件
遇到一个我想在查询中总结结果的问题。
示例如下:
NAME | FRUIT | PRICE
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | GRAPE | 3
DAVE | GRAPE | 3
DAVE | GRAPE | 3
DAVE | GRAPE | 3
这是我现在的桌子,尽管我需要的是约翰斯业务的摘要,如下所示:
NAME | FRUIT | PRICE
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | APPLE | 2
JOHN | APPLETOTAL | 8
JOHN | GRAPE | 3
JOHN | GRAPETOTAL | 3
DAVE | GRAPE | 3
DAVE | GRAPE | 3
DAVE | GRAPE | 3
可以做到吗?
答案 0 :(得分:1)
您可以尝试以下方法:
创建摘要数据框
summary_df = df.groupby(["NAME","FRUIT"] )["PRICE"].sum()
然后像这样突变FRUIT列
summary_df.FRUIT = summary_df.FRUIT.apply(lambda x : x + "TOTAL")
最后将数据帧添加回基本df
df = pd.concat([df, summary_df])
您可以按FRUIT列对该数据框df
进行排序,以获得排序后的数据框
答案 1 :(得分:1)
这应该可以解决您的问题
totals = df.groupby(['FRUIT', 'NAME']).sum().reset_index()
totals['FRUIT'] = totals['FRUIT'] + 'TOTAL'
result = pd.concat([df, totals]).sort_values(['NAME', 'FRUIT']).reset_index(drop=True)
result
# NAME FRUIT PRICE
#0 DAVE GRAPE 3
#1 DAVE GRAPE 3
#2 DAVE GRAPE 3
#3 DAVE GRAPETOTAL 9
#4 JOHN APPLE 2
#5 JOHN APPLE 2
#6 JOHN APPLE 2
#7 JOHN APPLE 2
#8 JOHN APPLETOTAL 8
#9 JOHN GRAPE 3
#10 JOHN GRAPETOTAL 3