2013-12-10 224 views
4

說我有一個列表和大熊貓數據幀簡單/高效的方式以擴大大熊貓據幀

import pandas as pd 
x = pd.DataFrame({'a': range(2), 'b': range(2)}) 
y = [1,2,3] 

我希望得到一個數據幀,看起來大致是這樣的:

a b y 
0 0 1 
1 1 1 
0 0 2 
1 1 2 
0 0 3 
1 1 3 

是否有簡單的方法來做到這一點?

+2

參見[這裏](https://github.com/pydata/pandas/issues/5401 )爲github問題有關使這更簡單。 – DSM

回答

10

這就是所謂的cartesian product。轉換爲數據幀

>>> y = pd.DataFrame(y, columns=list('y')) 

添加常數關鍵

>>> x['k'] = 1 
>>> y['k'] = 1 

和合並了它

>>> pd.merge(y, x, on='k')[['a', 'b', 'y']] 
    a b y 
0 0 0 1 
1 1 1 1 
2 0 0 2 
3 1 1 2 
4 0 0 3 
5 1 1 3 
+0

謝謝alko :) – qua