Python 3.x 如何从混合数据帧列中提取数字并仅替换为数字(就地)?

Python 3.x 如何从混合数据帧列中提取数字并仅替换为数字(就地)?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,给定以下玩具数据框: import pandas as pd import numpy as np df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'], }) df A 0 1a 1 NaN 2 10a 3 100b 4 0b 我想删除所有字符/字符串并提取列中的数字。 有一个inplace=True方法,但是如何提取数字并替换它们呢 我想得到: A 0 1

给定以下玩具数据框:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'],
                   })
df

    A
0   1a
1   NaN
2   10a
3   100b
4   0b
我想删除所有字符/字符串并提取列中的数字。 有一个inplace=True方法,但是如何提取数字并替换它们呢

我想得到:

    A
0   1
1   NaN
2   10
3   100
4   0
我现在是这样做的:

df.A = df.A.str.extract('(\d+)')

str.extract
顾名思义,不替换,只提取。尝试:

df['A'].replace('(\D.*)','',inplace=True, regex=True)
输出:

     A
0    1
1  NaN
2   10
3  100
4    0
关于regex模式的更多信息。基本上:

  • \D
    匹配任何非数字字符
  • *
    匹配
    \D
    后面的所有字符

  • 因此,该模式使用显示的示例将第一个非数字字符替换为空字符串
    '

    ,请尝试以下内容。简单的解释是:使用pandas的
    replace
    函数,在这里我将regex设置为true,然后在regex中替换它提到的将数字以外的任何内容替换为NULL

    df['A'].replace('([^0-9]*)','', regex=True)
    

    亲爱的广先生,请您解释一下regex@SteveS见更新的答案。我想你已经用最后一行回答了你的问题;您是否严格需要
    inplace=True
    ?这真是太好了。