我们来看一个示例DataFrame
import pandas as pd
df = pd.DataFrame(['a','b','c','d'],columns=['A'])
现在,我想要做的是添加两列(让我们将它们命名为B
和C
),其数值将由某个范围定义 - 让我们假设{{1}中的B } {和range(0,3)
中的C.
应该扩展初始数据框,以便对于range(10,12)
列中的每个值,可能会有A
和B
值的所有可能组合 - 因此最终的数据框应该看起来像这样:
C
实现这一目标的最佳解决方案是什么?
答案 0 :(得分:3)
这个叫cross product or cartesian product。你可以这样做:
>>> dfA = pd.DataFrame(['a','b','c'],columns=['A'])
>>> dfB = pd.DataFrame(range(3),columns=['B'])
>>> dfA['key'] = 1
>>> dfB['key'] = 1
>>> pd.merge(dfB, dfA, on='key').ix[:, ('A','B')]
A B
0 a 0
1 b 0
2 c 0
3 a 1
4 b 1
5 c 1
6 a 2
7 b 2
8 c 2
实际上,奇怪的是,没有可能通过how='cross'
来合并或加入方法。可能是开发人员决定不经常使用它。