我有一个带有以下列的数据框:
print(df):
Name
James#4567547
Mick#5456535
Tash
Liv#5468646
Nathan
Chris
您会看到有些行带有#
,有些没有。如何遍历并保留所有名称,并删除#
(如果有)及其后的所有内容。获取:
print(df):
Name
James
Mick
Tash
Liv
Nathan
Chris
我尝试过:
if df['Name'].str.contains('#').any():
df['Name'] = df['Name'].str.split('#',1)[0]
else:
df['Name'] = df['Name']
但是在ValueError: Length of values does not match length of index
行得到了str.split
。有任何想法吗?谢谢!
答案 0 :(得分:2)
这对str.split()
很有用,这就是语法。
df['Name'] = df['Name'].str.split('#').str[0]
答案 1 :(得分:2)
另一种方式。使用正则表达式读取后缀,并使用.str.replace()
方法替换后缀
df.Name=df.Name.str.replace('[\#\d+]','')
Name
0 James
1 Mick
2 Tash
3 Liv
4 Nathan
5 Chris