【问题标题】:Adding a column to dataframe that calculates the mean across rows-getting all 'NaNs' returned向数据框添加一列,计算各行的平均值 - 让所有“NaN”返回
【发布时间】:2019-02-01 00:05:15
【问题描述】:

我正在尝试向我的数据框中添加一列,以计算我的数据框列子集的行的平均值。我正在尝试这个(Min1-Min5 是我想要平均的列子集的名称):

df_temps['MinAvg'] = df_temps[['Min1', 'Min2', 'Min3', 'Min4', 'Min5']].mean(axis=1)

但它会返回一个名为 MinAvg 的列,其中包含所有 NaN 值。我的数据框中没有NA 或缺少数据点。

更新:所有最小变量都是从 API 中提取的字符串类型。因此,我需要根据下面的反馈将其从字符串更改为带有 (.astype(float)) 的浮点数!感谢您的帮助!

【问题讨论】:

  • 如果您分享您的数据样本会有所帮助。
  • 似乎值不是数字,所以使用df_temps['MinAvg'] = df_temps[['Min1', 'Min2', 'Min3', 'Min4', 'Min5']].astype(float).mean(axis=1)
  • @jezrael 谢谢!这有效,值是从 API 作为字符串类型提取的,所以我需要 .astype(float) 来实际计算平均值。
  • @Peyman 谢谢我将编辑它以显示我最初添加到我的数据框中的值是来自 API 的字符串。所以我需要上面提到的jazrael 的.astype(float) 片段。

标签: python pandas dataframe mean


【解决方案1】:

问题是值的类型是strings,所以需要将它们转换为float

cols = ['Min1', 'Min2', 'Min3', 'Min4', 'Min5'] 
df_temps['MinAvg'] = df_temps[cols].astype(float).mean(axis=1)

或重新分配回转换后的列:

df_temps = df_temps.astype(float)

df_temps['MinAvg'] = df_temps.mean(axis=1)

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2020-12-07
    • 1970-01-01
    • 2018-01-06
    • 2019-05-20
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多