2015-09-04 19 views
4
>>> y = pandas.DataFrame.from_dict({'{}': {'A': 0.2, 'B': 0.3, 'C': 0.4, 'D': 0.1}}) 

>>> z = pandas.DataFrame.from_dict({'{}': {'L': 0.25, 'M': 0.35, 'N': 0.10, 'O': 0.30}}) 

>>> y 
    {} 
A 0.2 
B 0.3 
C 0.4 
D 0.1 

>>> z 
    {} 
L 0.25 
M 0.35 
N 0.10 
O 0.30 

>>> want(y, z) 
     {} 
A L 0.050 
A M 0.070 
A N 0.020 
A O 0.060 
B L 0.075 
B M 0.105 
B N 0.030 
B O 0.090 
C L 0.100 
C M 0.140 
C N 0.040 
C O 0.120 
D L 0.025 
D M 0.035 
D N 0.010 
D O 0.030 

我该如何实施want熊猫 - 我如何生成既包含索引又包含数据的笛卡尔积?

我已阅读并尝试了所有merge的组合。

+0

你想前两列是索引? –

+0

是的。不是数据。他们代表事件。 – MikeRand

回答

4

一个简单的方法是使用pandas.MultiIndex.from_product

index = pandas.MultiIndex.from_product([y.index, z.index]) 
s = pandas.Series([y.loc[i[0], '{}'] * z.loc[i[1], '{}'] for i in index], index=index) 

结果:

A L 0.050 
    M 0.070 
    N 0.020 
    O 0.060 
B L 0.075 
    M 0.105 
    N 0.030 
    O 0.090 
C L 0.100 
    M 0.140 
    N 0.040 
    O 0.120 
D L 0.025 
    M 0.035 
    N 0.010 
    O 0.030 
dtype: float64