【问题标题】:Calculation for more than one column in data frame计算数据框中的多列
【发布时间】:2016-12-22 21:42:51
【问题描述】:

目标

我只使用 Pandas 几天,并尝试使用 .loc.mean() 计算多列的平均值,并在列下的新行中表示值。


我的尝试

当求单个列的平均值时,使用下面的代码...:

df.loc['Average', 'Column1'] = df['Column1'].mean()

^ ...输出符合预期。


但是,当我尝试添加一个额外的列来查找平均值时,如下所示:

df.loc['Average', 'Column1', 'Column2'] = df['Column1', 'Column2'].mean()

我收到以下错误:

KeyError: ('Column1', 'Column2')

我假设有一个非常简单的解决方案 - 我在这个阶段还很陌生。


预期输出

# ...... is replaced with numbers

            Column1       Column2
1           .......       .......
2           .......       .......
3           .......       .......
...         .......       .......
Average     #SomeFloat    #AnotherFloat

【问题讨论】:

    标签: python python-2.7 pandas average


    【解决方案1】:

    您需要将多个列名包装在一个列表中:

    df.loc['Average', ['Column1', 'Column2']] = df[['Column1', 'Column2']].mean()
    

    【讨论】:

    • 太好了,谢谢。有必要这样做吗?
    • 是的。如果你不这样做,它将被视为一个元组,因此在 pandas 中是多索引,就像在 python 中一样,逗号创建元组。这就是您看到 keyError 的原因,这意味着 (Column1, Column2) 被视为多索引并且它不存在于数据框中。
    • 谢谢,很好的解释 :)
    【解决方案2】:

    mean 仅对单个输入起作用。也许获得所需结果的最直接方法是使用列列表:

    df[['Column1', 'Column2']].mean()
    

    您也可以单独计算它们,将这些均值相加,然后除以 2,但这需要更多的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      相关资源
      最近更新 更多