我有以下蟒大熊貓數據幀:蟒大熊貓GROUPBY()結果
df = pd.DataFrame({
'A': [1,1,1,1,2,2,2,3,3,4,4,4],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1]
});
df
A B C
0 1 5 1
1 1 5 1
2 1 6 1
3 1 7 1
4 2 5 1
5 2 6 1
6 2 6 1
7 3 7 1
8 3 7 1
9 4 6 1
10 4 7 1
11 4 7 1
我想有另一列存儲的總和超過C值固定(兩者)A和B的值也就是說,這樣的:
A B C D
0 1 5 1 2
1 1 5 1 2
2 1 6 1 1
3 1 7 1 1
4 2 5 1 1
5 2 6 1 2
6 2 6 1 2
7 3 7 1 2
8 3 7 1 2
9 4 6 1 1
10 4 7 1 2
11 4 7 1 2
我與大熊貓groupby
嘗試和它種工作方式:
res = {}
for a, group_by_A in df.groupby('A'):
group_by_B = group_by_A.groupby('B', as_index = False)
res[a] = group_by_B['C'].sum()
,但我不知道如何從res
以有序的方式''得到結果。對此有任何建議會很高興。謝謝。
謝謝@Andy Hayden!使用'sum'的解決方案我認爲更通用。事實上,我在'C'中沒有'1'(當'size'完美的時候,正如你在解決方案中指出的那樣),而是一些浮點數,所以爲了使其正常工作,我需要使用' sum'。但無論如何,輝煌的,再次感謝你。 –
我認爲你夢寐以求的單行是''df ['D'] = df.groupby(['A','B']).transform(np.size)''。在好時光和壞時代,「變換」就在那裏。 :-D –