首页 > 解决方案 > 如何从数字中删除单位并乘以数字

问题描述

我在熊猫数据框中有一列属性的土地面积。土地面积以平方米和公顷为单位。我只想使用平方米作为单位,所以我需要通过将数字乘以 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?提前感谢您的帮助!

标签: pythonpandasstringdataframe

解决方案


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

推荐阅读