2017-09-14 92 views
-1

我有一個數據幀,看起來像這樣:熊貓 - 組,總和和計數

x = pd.DataFrame.from_dict({'row':[1, 1, 2, 3, 4,4,4], 'val_x': [1, 2, 3, 4, 5, 6, 7], 'i_x': [1, 2, 2,3, 5,5,6]}) 

    i_x row val_x 
0 1 1  1 
1 2 1  2 
2 2 2  3 
3 3 3  4 
4 5 4  5 
5 5 4  6 
6 6 4  7 

我想這組按行,各組總結val_ix的值。並計算i_x的不同值。所以輸出應該是這樣的:

i_x row val_x 
0 1 1  3 
1 1 2  3 
3 1 3  4 
4 2 4  18 

例如,如果你在最後一排,它有I_X = 2,因爲我們有一個小組在2倍不同的值(5,6),它們加起來5 + 6 + 7 = 18

回答

2

使用agg

In [593]: x.groupby('row', as_index=False).agg({'i_x': 'nunique', 'val_x': 'sum'}) 
Out[593]: 
    row val_x i_x 
0 1  3 2 
1 2  3 1 
2 3  4 1 
3 4  18 2 

In [594]: x.groupby('row', as_index=False).agg({'i_x': pd.Series.nunique, 'val_x': np.sum}) 
Out[594]: 
    row val_x i_x 
0 1  3 2 
1 2  3 1 
2 3  4 1 
3 4  18 2 
+0

你不是應該標記這個問題重複inste試圖獲得積分的廣告? –

+1

我沒有找到愚蠢的東西,請按照你看到的那樣關閉它。在您指責我尋找積分之前,請回頭看看我的活動,看看我今天和之前所做的一般情況,先生! – Zero