2012-09-07 66 views
3

假設我有一個熊貓DF與「A」,「B」,「C」作爲列名輸出大熊貓分組數據幀不凝聚

A B C 
a1 b11 c11 
a1 b12 c12 
a2 b21 c21 
a2 b22 c22 

我可以由「A」基團,但可我得到

A B C 
a1 [b11,b12], [c11,c12] 
a2 [b21,b22], [c21,c22] 

沒有任何聚合?希望訂單(b12之前的b11)保留在原始表格中。

回答

3

我不知道該怎麼做你想要什麼,但也許這是足夠接近:

In [23]: df = pd.DataFrame({'A' : ['a1', 'a1', 'a2', 'a2'], 
          'B' : ['b11', 'b12', 'b21', 'b22'], 
          'C' : ['c11', 'c12', 'c21', 'c22']}) 

In [24]: grpA = df.groupby('A') 
In [25]: a1 = grpA.get_group('a1') 

使用,我再拿到:

In [26]: a1['B'] # or a1.B 
Out[26]: 
0 b11 
1 b12 
Name: B 

也:

In [39]: import numpy as np 

In [40]: np.array(a1.B) 
Out[40]: array([b11, b12], dtype=object) 

最後:

In [41]: grpdA.get_group('a1').B.tolist() # leave off `.tolist()` to get a series 
Out[41]: ['b11', 'b12'] 

希望有所幫助。

2
In [46]: df.groupby('A').agg(lambda g: dict([(k,g[k].tolist()) for k in g])) 
Out[46]: 
       B    C 
A         
a1 ['b11', 'b12'] ['c11', 'c12'] 
a2 ['b21', 'b22'] ['c21', 'c22'] 
+0

你能解釋一下這個工作原理或給出一個關於'agg'的鏈接嗎?熊貓文檔說'agg'可以接受一個函數作爲參數,但是它沒有說這個函數接收了什麼,應該返回什麼(從你的答案我理解一個'dict',但是它的結構呢?)。 – mmj