Pandas div使用索引

时间:2014-04-12 04:18:02

标签: python pandas

我有时会为了解熊猫数据结构而苦苦挣扎,而且似乎又是这样。基本上,我有:

  • 1个数据透视表,主轴为序列号
  • 使用相同索引的系列

我想将我的数据透视表的每一列除以Serie中的值使用索引来匹配这些行。我尝试了很多组合......到目前为止没有成功:/

import pandas as pd

df = pd.DataFrame([['123', 1, 1, 3], ['456', 2, 3, 4], ['123', 4, 5, 6]], columns=['A', 'B', 'C', 'D'])
pt = pd.pivot_table(df, rows=['A', 'B'], cols='C', values='D', fill_value=0)

serie = pd.Series([5, 5, 5], index=['123', '678', '345'])

pt.div(serie, axis='index')

但我只是在拿NaN。我想这是因为列名称不匹配,但这就是我使用索引作为轴的原因。关于我做错了什么想法?

由于

1 个答案:

答案 0 :(得分:1)

你说"使用相同的索引",但它们不一样:pt有一个多索引,而serie只有一个索引:

>>> pt.index
MultiIndex(levels=[[u'123', u'456'], [1, 2, 4]],
           labels=[[0, 0, 1], [0, 2, 1]],
           names=[u'A', u'B'])

你还没告诉分部你想要在索引的A部分对齐。您可以使用level传递该信息:

>>> pt.div(serie, level='A', axis='index')
C        1   3    5
A   B              
123 1  0.6   0  0.0
    4  0.0   0  1.2
456 2  NaN NaN  NaN

[3 rows x 3 columns]