【问题标题】:Column in DataFrame in Pandas with value 0Pandas 中 DataFrame 中值为 0 的列
【发布时间】:2020-02-16 01:49:22
【问题描述】:

我尝试在 Pandas Python 的 DataFrame 中创建 2 个新列,第一列 aa 显示平均温度是正确的,但是,第二列 bb 应该显示城市的温度减去所有城市的平均温度价值0??

问题出在哪里?我是否正确使用了 lambda?你能给我解决方案吗?非常感谢!

file["aa"] = file.groupby(['City'])["Temperature"].transform(np.mean)
display(file.sample(10))

file["bb"] = file.groupby(['City'])["Temperature"].transform(lambda x: x - np.mean(x))
display(file.head(10))

【问题讨论】:

    标签: python pandas lambda transform


    【解决方案1】:

    编辑:根据gereleth 的评论更新。您可以进一步简化它!

    file['bb'] = file.Temperature - file.aa
    

    由于我们已经计算了aa 列中的平均值,我们可以简单地重复使用该列来计算每行的Temperatureaa 列的差异,方法是使用如下的pandas apply 方法:

    file["aa"] = file.groupby(['City'])["Temperature"].transform(np.mean)
    display(file.sample(10))
    file["bb"] = file.apply(lambda row: row['Temperature'] - row['aa'], axis=1)
    display(file.sample(10))
    

    如果您想减去所有城市的平均气温,您可以在 aa 列上使用平均值:

    file["aa"] = file.groupby(['City'])["Temperature"].transform(np.mean)
    display(file.sample(10))
    avg_all_cities = file['aa'].mean()
    file["bb"] = file.apply(lambda row: row['Temperature'] - avg_all_cities, axis=1)
    display(file.sample(10))
    

    【讨论】:

    • 当你可以写 file.Temperature - file.aa?..
    • 是的,这也应该有效。更新了我的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2014-06-12
    • 2013-12-09
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多