大熊猫 - 我如何生产指数和数据的笛卡尔积?

时间:2015-09-04 06:18:41

标签: python pandas

>>> 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组合。

1 个答案:

答案 0 :(得分: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