pandas - 通过添加其他级别来扩展DataFrame

时间:2013-10-30 14:15:38

标签: python pandas dataframe

我们来看一个示例DataFrame

import pandas as pd
df = pd.DataFrame(['a','b','c','d'],columns=['A'])

现在,我想要做的是添加两列(让我们将它们命名为BC),其数值将由某个范围定义 - 让我们假设{{1}中的B } {和range(0,3)中的C.

应该扩展初始数据框,以便对于range(10,12)列中的每个值,可能会有AB值的所有可能组合 - 因此最终的数据框应该看起来像这样:

C

实现这一目标的最佳解决方案是什么?

1 个答案:

答案 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'来合并或加入方法。可能是开发人员决定不经常使用它。