扩展pandas数据帧的简单/有效方法

时间:2013-12-10 20:47:39

标签: python pandas

假设我有一个列表和一个pandas数据帧

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

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:10)

这称为cartesian product。转换为dataframe

>>> 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