2016-10-19 183 views
1

我想分組後,用附加條件大熊貓與附加條件

df = pd.DataFrame({ 
    'A' :[4,5,7,8,2,3,5,2,1,1,4,4,2,4,5,1,3,9,7,9], 
    'B' :[9,5,7,8,3,3,5,2,1,1,4,4,2,4,5,1,3,5,7,9], 
    'C' :[9,5,7,8,3,3,5,2,1,1,4,4,2,4,5,1,3,5,7,9], 
    'D' :[1,0,1,0,1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,0] 
}) 
df1 = df.groupby(['A', 'B'], as_index=False).transform('sum') 
df1 = df.join(df.groupby(['A'])['C'].sum(), on='A', rsuffix='_inward') 

df1 

在上面的查詢它能夠總結並給予輸出,但添加在大熊貓數據幀新的一列創建GROUPBY和列求和我怎麼了df['D'] == 1

預計輸出

A B C D C_inward 
0 4 9 9 1  13 
2 7 7 7 1  14 
4 2 3 3 1   3 
5 3 3 3 1   3 
8 1 1 1 1   3 
9 1 1 1 1   3 
13 4 4 4 1  13 
14 5 5 5 1  5 
15 1 1 1 1   3 
18 7 7 7 1  14 

回答

0

添加條件,您可以添加boolean indexing

mask = df['D'] == 1 
df1 = df[mask].join(df[mask].groupby(['A'])['C'].sum(), on='A', rsuffix='_inward') 

print (df1) 
    A B C D C_inward 
0 4 9 9 1  13 
2 7 7 7 1  14 
4 2 3 3 1   3 
5 3 3 3 1   3 
8 1 1 1 1   3 
9 1 1 1 1   3 
13 4 4 4 1  13 
14 5 5 5 1   5 
15 1 1 1 1   3 
18 7 7 7 1  14 
+0

我不確定我是否理解問題。如果回答錯誤,請添加所需的輸出。謝謝。 – jezrael

+0

添加了預期的輸出 –

+0

請參閱編輯。 – jezrael