我在尝试了解group by的以下代码段时遇到问题,我试图了解df.groupby(L).sum()的计算方式。
这是我从网址enter link description here获得的代码段。 感谢您的帮助。
答案 0 :(得分:2)
行是按list的值分组的,因为list的长度与DataFrame
中的行数相同,这意味着:
rng = np.random.RandomState(0)
df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],
'data1': range(6),
'data2': rng.randint(0, 10, 6)},
columns = ['key', 'data1', 'data2'])
L = [0, 1, 0, 1, 2, 0]
print (df)
key data1 data2
0 A 0 5 <-0
1 B 1 0 <-1
2 C 2 3 <-0
3 A 3 3 <-1
4 B 4 7 <-2
5 C 5 9 <-0
所以:
data1 for 0 is 0 + 2 + 5 = 7
data2 for 0 is 5 + 3 + 9 = 17
data1 for 1 is 1 + 3 = 4
data2 for 1 is 0 + 3 = 3
data1 for 2 is 4
data2 for 2 is 7
输出:
print(df.groupby(L).sum())
data1 data2
0 7 17
1 4 3
2 4 7
省略了关键字列,因为Automatic exclusion of 'nuisance' columns。