【问题标题】:How to add calculations on a pandas groupby table?如何在熊猫 groupby 表上添加计算?
【发布时间】:2020-06-18 17:11:39
【问题描述】:

我已经使用 pandas.groupby 创建了一个表,但我想添加一个对 groupby 输出中的列进行计算的列。这是我的代码(我使用的是 Python 2)和结果:

DMM_pivot = df.query('rpc_flag != "IB RPC"').groupby(['rpc_flag', 'DMM_type'])
DMM_pivot = DMM_pivot['number_accounts'].sum().unstack('rpc_flag').fillna(0)
DMM_pivot = DMM_pivot.apply(lambda x: x / x.sum()).round(2)  # Show percentage of total
print DMM_pivot

rpc_flag  No RPC  OB RPC
DMM_type                
Bad         0.34    0.25
Good        0.66    0.75

我想添加一列显示各列之间的百分比差异:(OB RPC 值/无 RPC 值 - 1)并期望得到这些结果:

rpc_flag  No RPC  OB RPC   Change
DMM_type                
Bad         0.34    0.25    -0.26
Good        0.66    0.75     0.14

【问题讨论】:

  • df['OB RPC'].div(df['No RPC']) - 1 有什么问题?
  • @Datanovice 'OB RPC' 是df['rpc_flag'] 中的值,而不是数据框中的列。我认为如果我想向数据框添加一个新列或在数据框行上计算,但不是作为 groupby 输出中的新列,这将起作用。注意:推测,因为我是这里的初学者。

标签: python pandas python-2.x


【解决方案1】:

使用应用。

DMM_pivot["Change"] = DMM_pivot.apply(lambda x: x["OB RPC"]/x["No RPC"] -1, axis=1)

【讨论】:

  • @HokieSpider 很高兴听到。支持/接受将不胜感激。
  • 它说我可以在 4 分钟内接受,我还需要 5 个声望点来投票。一旦可以,我会回来做这两件事。
  • @HokieSpider 谢谢!
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多