代码之家  ›  专栏  ›  技术社区  ›  noliverte

python替换数据帧中的非数字字符[重复]

  •  0
  • noliverte  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有以下数据帧列

    >>> df2['Age]
    
    1    25
    2    35
    3    48 y
    4    34 yea
    5    29
    ...
    

    我只想用数字en代替df2[年龄]中的值

    1    25
    2    35
    3    48
    4    34
    5    29
    ...
    

    我的代码不起作用:

    df2.Age.replace('^.*','^[0-9]*[0-9]',regex=True,inplace=True)
    

    结果如下

     1    ^[0-9]*[0-9]
     2    ^[0-9]*[0-9]
     3    ^[0-9]*[0-9]
     4    ^[0-9]*[0-9]
     5    ^[0-9]*[0-9]
     ...
    

    谢谢你的帮助

    2 回复  |  直到 6 年前
        1
  •  2
  •   jezrael    6 年前

    使用 \D+ 将非数字字符串替换为空字符串:

    df2.Age.replace('\D+','',regex=True,inplace=True)
    print (df2)
      Age
    1  25
    2  35
    3  48
    4  34
    5  29
    
        2
  •  1
  •   Rakesh    6 年前

    使用 str.extract

    前任:

    import pandas as pd
    
    df = pd.DataFrame({"Age": ['25', '35', '48 y', '34 yea', '29']})
    df["Age"] = df["Age"].str.extract(r"(\d+)", expand=False)
    print(df)
    

    输出:

      Age
    0  25
    1  35
    2  48
    3  34
    4  29