我有一个字符串列,它包含ID号,但有些行包含不同的名称,我不需要这些名称
例如:
12-1
name
12-2
name
12-3有时ID号码只是数字(不包含破折号)
12
name
13
name
14我希望输出是
12-1
12-2
12-3或
12
13
14除了删除出现的破折号、转换为数字、强制错误、然后删除包含nan的行之外,是否还有更优雅的方法来做到这一点呢?
发布于 2019-08-28 12:33:24
用Series.str.contains与正则表达式结合使用boolean indexing进行过滤
print (df)
col
0 12-1
1 name
2 12-2
3 name
4 12如果col列中有任何数字,则可以筛选所有行:
df = df[df['col'].str.contains('\d')]如果只有数字或只有-的数字,则可能进行更显式的测试。
print (df)
col
0 name1
1 45-
2 12-1
3 name
4 12-2
5 name12-23
6 12
df = df[df['col'].str.contains('^\d+$|^\d+-\d+$')]
#if need match 45-
#df = df[df['col'].str.contains('^\d+-?$|^\d+-\d+$')]
print (df)
col
2 12-1
4 12-2
6 12https://stackoverflow.com/questions/57692491
复制相似问题