我尝试在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))
答案 0 :(得分:0)
编辑:已根据gereleth的评论进行了更新。您可以进一步简化它!
file['bb'] = file.Temperature - file.aa
由于我们已经计算了aa
列中的平均值,因此我们可以简单地重用此列来使用熊猫计算每一行的Temperature
和aa
列的差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))