[英]Python Pandas slice column string up to a character based on condition
我尝试了多种方法,根据条件将Panda列字符串切成特定字符。
例如,考虑一下Kaggle的Titanic数据集,我想在其中将“名称”列中的所有名称切成'('字符,以防它们包含该字符,从而使名称中不存在方括号,并且名称中仅包含之前的字符因此,您可以将其视为摆脱括号以与括号之前的内容保持一致。
我用这种方式:
df.loc[df['Name'].str.rfind('(') > -1, 'Name'] = df['Name'].str.slice(0, df['Name'].str.rfind('('))
它实质上是在找到包含'('的名称时将其切成薄片,否则将返回该名称(不包括左括号。该切片全部是关于在左括号之前查找并获取字符。
我的解决方案无法正常工作,因为它会产生“ NaN”,我该如何解决?
您可以只使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.