我尝试了不同的方法,根据条件将Panda列字符串切成特定字符。
例如,考虑一下Kaggle的“泰坦尼克号”数据集,在这里我想将“名称”列中的所有名称切成'('字符,以防万一,因为其中包括该字符,所以不存在名称中的括号和名称中仅包含括号开头的字符,因此您可以将其视为摆脱括号以与括号之前的字符保持一致。
我用这种方式:
df.loc[df['Name'].str.rfind('(') > -1, 'Name'] = df['Name'].str.slice(0, df['Name'].str.rfind('('))
基本上是在找到包含'('的名称时将其切成薄片,否则返回该名称(不包括左括号。 切片的全部内容是在开括号之前查找并获取字符。
我的解决方案无法正常工作,因为它会产生“ NaN”,我该如何解决?
答案 0 :(得分:0)
您可以只使用pd.Series.str.split
来获取' ('
之前的所有内容。
import pandas as pd
df = pd.DataFrame({'Name': ['Braund, Mr. Owen Harris',
'Cummings, Mrs. John Bradley (Florence Briggs)',
'Heikkinen, Miss. Laina',
'Futrelle, Mrs. Jacques Heath (Lily May Peel)',
'Allen, Mr. William Henry']})
df['Name'] = df.Name.str.split(' \(', expand=True)[0]
输出:
print(df)
Name
0 Braund, Mr. Owen Harris
1 Cummings, Mrs. John Bradley
2 Heikkinen, Miss. Laina
3 Futrelle, Mrs. Jacques Heath
4 Allen, Mr. William Henry