【问题标题】:Pandas mean for certain columns (binary values) based on another columnPandas 表示基于另一列的某些列(二进制值)
【发布时间】:2021-02-16 02:50:26
【问题描述】:

假设我们有这样的事情:

df = pd.DataFrame([[0,1,0,13], [1,0,1,14], [1,1,0,12], [1,0,0,15]], columns = ["A", "B" , "C", "p"])

A、B、C 具有二进制值,我想计算每列的 p 平均值,但要分别计算每个组(1 和 0)。

对于我使用的一列

df.groupby('A')['p'].mean()

但是如何一次计算列 ABC 的平均值?

【问题讨论】:

  • 预期输出应该如何?
  • 完美的是:两列 0 和 1 以及 3 行 A、B、C
  • 答案已编辑。
  • @jezrael 完美!谢谢!

标签: python python-3.x pandas pandas-groupby pivot-table


【解决方案1】:

首先使用DataFrame.melt 进行反透视,聚合mean 最后添加Series.unstack

df1 = df.melt('p').groupby(['variable', 'value'])['p'].mean().unstack(fill_value=0)

或使用DataFrame.pivot_table:

df1 = df.melt('p').pivot_table(index='variable', columns='value', values='p', fill_value=0)

print (df1)
value             0          1
variable                      
A         13.000000  13.666667
B         14.500000  12.500000
C         13.333333  14.000000

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 2019-08-10
    • 2022-01-01
    • 1970-01-01
    • 2016-08-05
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多