将每个字符串值替换为0



给定此数据框,我想将列中的每个字符串值替换为值0。我尝试了这段代码,但数据框仍然不受影响。我不知道如何改变这一行的参数

df['new'].replace(to_replace=r'^$', value=0, regex=True)

下面是完整的代码:

l2=['a. 12','b. 75','23', 'sc/a 34', '85', 'a 32', 'b 345']
d = {'col1': []}
df = pd.DataFrame(data=d)
df['col1']=l2
df['new'] = np.where(df["col1"].str.isnumeric(),df["col1"].str[:], (df["col1"].str.extract("^([a-z/]*)", expand=False)) )
print(df['new'])
df['new'].replace(to_replace=r'^$', value=0, regex=True)
print(df['new'])

所以dataframe列应该有以下值:

0 0 0 23 0 85 0 0

试试to_replace='^', value=0, regex=True, inplace=True.

也就是说:如果正则表达式匹配,那么它必须是一个字符串,所以用数字0替换。

参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html

PS如果你想去掉非数字字符,而所有数字都是整数,那么这可能就是你想要的:

df['new'].replace(to_replace=r'D+', value='', regex=True, inplace=True)

即:在每个值中(示例中的所有值都是字符串),用空字符串替换任何非数字序列。

你的正则表达式表示一个空字符串:

字符串的start(^)和end($)之间没有任何内容

你应该使用:.*

最新更新