#python #pandas #string #dataframe
Вопрос:
У меня есть столбец площади недвижимости в фрейме данных pandas. Площадь земельного участка измеряется как в квадратном метре, так и в гектаре. Я хочу использовать в качестве единицы измерения только квадратный метр, поэтому мне нужно будет преобразовать гектар в квадратный метр, умножив это число на 10000. Исходный столбец выглядит следующим образом (показаны только первые десять):
0 895m2
1 52.9ha
2 1229m2
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 2961m2
9 NaN
10 NaN
Я удалил ha
, написав этот код: df['Land area (m2)'].str.replace('ha','')
и я получил это:
0 895m2
1 52.9
2 1229m2
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 2961m2
9 NaN
10 NaN
Итак, теперь моя проблема в том, как я собираюсь удалить m2
И изменить единицу измерения с гектара на квадратный метр, где это необходимо, И преобразовать весь столбец float
в одно и то же время? Заранее спасибо за помощь!
Ответ №1:
Используйте Series.replace
по значениям для нескольких, удалите пропущенные значения и несколько строк по eval
:
df['Land area (m2)'] = (df['Land area (m2)'].replace({'ha':'*10000','m2':'*1'}, regex=True)
.dropna()
.apply(pd.eval))
print (df)
Land area (m2)
0 895.0
1 529000.0
2 1229.0
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 2961.0
9 NaN
10 NaN
Комментарии:
1. Спасибо! Но мне интересно, какова здесь роль
dropna()
?2. @Ilovenoodles — Удаляет пропущенные значения, чтобы избежать ошибок
pd.eval
.