Столбец в DataFrame в Pandas со значением 0 - PullRequest
2 голосов
/ 19 октября 2019

Я пытаюсь создать 2 новых столбца в DataFrame в Pandas Python, и первый столбец aa, который показывает среднюю температуру, является правильным, тем не менее, второй столбец bb, который должен представлять температуру в городе минус средняя температура во всех городах, отображаетсязначение 0 ??

В чем проблема? Я правильно использовал лямбду? Не могли бы вы дать мне решение? Большое спасибо!

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 голосов
/ 19 октября 2019

РЕДАКТИРОВАТЬ : Обновлено в соответствии с комментариями gereleth . Вы можете упростить его еще больше!

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

Поскольку мы уже вычислили среднее значение в столбце aa, мы можем просто повторно использовать этот столбец, чтобы вычислить разницу между Temperature и aaстолбец каждой строки, используя pandas применить метод , как показано ниже:

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))
...