2013-12-10 187 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