【发布时间】:2020-03-17 06:38:56
【问题描述】:
我对 groupby 和 pandas 有疑问,一开始我有这个图表:
import pandas as pd
data = {'Code_Name':[1,2,3,4,1,2,3,4] ,'Name':['Tom', 'Nicko', 'Krish','Jack kr','Tom', 'Nick', 'Krishx', 'Jacks'],'Cat':['A', 'B','C','D','A', 'B','C','D'], 'T':[9, 7, 14, 12,4, 3, 12, 11]}
# Create DataFrame
df = pd.DataFrame(data)
df
i have this :
Code_Name Name Cat T
0 1 Tom A 9
1 2 Nick B 7
2 3 Krish C 14
3 4 Jack kr D 12
4 1 Tom A 4
5 2 Nick B 3
6 3 Krishx C 12
7 4 Jacks D 11
现在我与 groupby :
df.groupby(['Code_Name','Name','Cat'],as_index=False)['T'].sum()
i got this:
Code_Name Name Cat T
0 1 Tom A 13
1 2 Nick B 10
2 3 Krish C 14
3 3 Krishx C 12
4 4 Jack kr D 12
5 4 Jacks D 11
但对我来说,我需要这个结果:
Code_Name Name Cat T
0 1 Tom A 13
1 2 Nick B 10
2 3 Krish C 26
3 4 Jack D 23
我不关心 Name Code_name 对我来说唯一重要的是总和 T 谢谢
【问题讨论】:
-
所需的输出是
df.groupby('Cat')['T'].sum(),但您按三列分组。你想如何处理不同的名字(即KrishvsKrishx)? -
df.groupby(['Code_Name','Cat'],as_index=False)['T'].sum()