【问题标题】:Pandas div using index使用索引的熊猫 div
【发布时间】:2014-04-12 04:18:01
【问题描述】:

我有时在理解 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。我想这是因为列名不匹配,但这就是我使用索引作为轴的原因。关于我做错了什么有什么想法吗?

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案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]
    

    【讨论】:

    • 谢谢!实际上,我仍在为索引苦苦挣扎。与此同时,我的计算方式有所不同,但很高兴了解 level 关键字
    猜你喜欢
    • 2016-10-16
    • 2019-01-19
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多