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
?这真是太好了。