Python 仅将熊猫中的一个汉字行替换为NaN
给定一个小数据集,如下所示:Python 仅将熊猫中的一个汉字行替换为NaN,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,给定一个小数据集,如下所示: id name 0 1 你 1 2 你好 2 3 你好吗? 3 4 好 4 5 hello 5 6 how are you? 6 7 how 如果名称列只包含一个字符,我想用NaN替换它的中文字符 预期结果如下: id name 0 1 N
id name
0 1 你
1 2 你好
2 3 你好吗?
3 4 好
4 5 hello
5 6 how are you?
6 7 how
如果名称列只包含一个字符,我想用NaN
替换它的中文字符
预期结果如下:
id name
0 1 NaN
1 2 你好
2 3 你好吗?
3 4 NaN
4 5 hello
5 6 how are you?
6 7 how
我怎么能在熊猫身上做到呢?谢谢。为测试长度创建掩码,如果存在汉字:
mask = df['name'].str.len().eq(1) & df['name'].str.contains(r'[\u4e00-\u9fff]')
mask = df['name'].str.contains(r'^[\u4e00-\u9fff]{1}$')
或者您只能使用正则表达式测试一个汉字:
mask = df['name'].str.len().eq(1) & df['name'].str.contains(r'[\u4e00-\u9fff]')
mask = df['name'].str.contains(r'^[\u4e00-\u9fff]{1}$')
按掩码最后设置的缺失值位于:
或在:
df['name']=df['name'].mask(df['name'].str.len()==1)
print (df)
id name
0 1 NaN
1 2 你好
2 3 你好吗?
3 4 NaN
4 5 hello
5 6 how are you?
6 7 how