Pandas:将列中所有小写的字符串替换为

2024-09-29 19:03:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,其中有一个名为“names”的列,其中包含不是名称的字符串。这些都是用小写写成的。在

df = pd.DataFrame({'names': ['Chris Z', 'Hulk Hogan', 'notaname',
                             'whateven']})

预期产量:

^{pr2}$

我想用NaN替换它们,我已经试过了:

df['names'] = df['names'].replace(r'[a-z]{2}', None, inplace=True, regex=True)

但这将替换列中的所有条目,包括以大写字母开头的条目。你能提出一个解决办法吗?在


Tags: 数据字符串名称truedataframedfnames条目
2条回答

使用mask^[a-z]+$作为正则表达式:

df = pd.DataFrame({'names': ['Chris Z', 'Hulk Hogan', 'notaname', 'whateven']})

df.names.mask(df.names.str.match(r'^[a-z]+$'))

0       Chris Z
1    Hulk Hogan
2           NaN
3           NaN
Name: names, dtype: object

如果某些小写字符串中有空格,只需使用^[a-z\s]+$。在

^{pr2}$

如果不使用regex,可以将序列与自身的小写版本进行比较:

df.loc[df['names'] == df['names'].str.lower(), 'names'] = np.nan

print(df['names'])

0       Chris Z
1    Hulk Hogan
2           NaN
3           NaN
Name: names, dtype: object

相关问题 更多 >

    热门问题