2017-10-05 57 views
2

我有這樣如何平鋪熊貓中具有相似索引的行?

df = pd.DataFrame({'a':[np.array([5,6]),6,np.array([8,10]),7],'b':[np.array([7,8]),9,np.array([15,10]),7]},index=[0,0,1,1]) 
 
     a   b 
0 [5, 6] [7, 8] 
0  6   9 
1 [8, 10] [15, 10] 
1  7   7 

當我嘗試了數據幀groupby

df.groupby(level=0).apply(lambda x: pd.Series(x.values.flatten())) 
 
     0   1 2 3 
0 [5, 6] [7, 8] 6 9 
1 [8, 10] [15, 10] 7 7 

那麼如何使用適用於我結束了扁平化與同類指數細胞這樣的方式在同一列下。

 
     a   b 
0 [5, 6,6] [7, 8,9] 
1 [8, 10,7] [15, 10,7] 

回答

2

這是numpy.hstack的工作。但是,如果值是多維的,將groupby的輸出獲取到數據框中總是有點棘手。配件東西成系列通常工作:

df.groupby(level=0).apply(lambda g: pd.Series({ 
    'a': np.hstack(g['a'].values), 
    'b': np.hstack(g['b'].values) 
})) 

當然,列舉字典會更好......

對於n列的字典理解會更好,即

df.groupby(level=0).apply(lambda g: pd.Series({i: np.hstack(g[i].values) for i in df.columns})) 
+0

IANS你不相信我我是如此親密。 – Dark

+1

我相信你:) – IanS