繁体   English   中英

Python Pandas切片列字符串(取决于条件)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM