Pandas中DataFrame中值为0的列

时间:2019-10-19 07:21:53

标签: python pandas lambda transform

我尝试在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))

1 个答案:

答案 0 :(得分:0)

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

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

由于我们已经计算了aa列中的平均值,因此我们可以简单地重用此列来使用熊猫计算每一行的Temperatureaa列的差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))