Pandas if语句,用于在字符串中查找子字符串

时间:2020-06-06 01:19:31

标签: python pandas

我有一个带有以下列的数据框:

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。有任何想法吗?谢谢!

2 个答案:

答案 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