Как удалить единицу из числа и умножить число

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