2013-04-20 69 views
0

我有一個數據幀:合併一個數據幀的列到一個列表中由第一列合併後

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 
    'foo', 'bar', 'foo', 'foo'], 
    'B' : ['one', 'one', 'two', 'three', 
    'two', 'two', 'one', 'three'], 
    'C' : np.random.randn(8), 'D' : np.random.randn(8)}) 

其產生:

 A  B   C   D 
0 foo one -0.151044 2.235048 
1 bar one -0.732017 0.415994 
2 foo two -1.203263 -1.178483 
3 bar three 0.329306 0.356476 
4 foo two 0.512176 -2.640831 
5 bar two -0.997254 0.504314 
6 foo one 0.434732 0.751182 
7 foo three -0.558386 -1.563932 

可以在一組通過或者由A或B,其會在新的數據框中給出C和D的值作爲列表? group_concat在mysql中的工作方式。

grouped = df.groupby('A').apply(WhatFunctionCanIUse) 

回答

1

DataFrame中的列表通常不方便使用。可能有更自然的方式來做你最終想做的事情。如果你詳細說明,也許有人會建議一個更習慣的解決方案。

但是,要回答您的問題,您可以應用list

In [26]: df.groupby('A').C.apply(list) 
Out[26]: 
A 
bar      [-0.732017, 0.329306, -0.997254] 
foo [-0.151044, -1.203263, 0.512176, 0.434732, -0.... 
dtype: object 
+0

好吧,我想要做的是讓我的所有結果準備好出來的MySQL,然後做不同類型的合併來得到我的陰謀。 例如說你有化學結果vs動物vs結果。我想在一張圖上看到不同的動物化合物對比效果圖。 – 2013-04-20 16:00:41

+0

如果你可以將你的「合併」數據放入一個DataFrame的列中,那麼''.plot()''會在同一個圖上顯示每一列作爲一個單獨的行。如果你需要更多的合併幫助,我建議你用一個有效的例子來開啓一個新的問題,用你正在談論的化學,動物,效應數據的樣本。 – 2013-04-20 18:44:37