【发布时间】:2021-11-30 23:01:48
【问题描述】:
给定这个数据框,我想用值 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'])
因此数据框列应具有以下值:
0 0 23 0 85 0 0
【问题讨论】:
-
这个正则表达式:
^$将只匹配空字符串。同样直接调用 replace 而不提供 inplace=True 可能不会产生您想要的结果。
标签: python pandas string dataframe