我有时会为了解熊猫数据结构而苦苦挣扎,而且似乎又是这样。基本上,我有:
我想将我的数据透视表的每一列除以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。我想这是因为列名称不匹配,但这就是我使用索引作为轴的原因。关于我做错了什么想法?
由于
答案 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]