Python:如何删除字符串左侧第二个逗号后的所有文本

标签 python pandas

我想删除包含“County, Texas”的数据框中字符串左侧第二个逗号后的所有文本。例如,

之前:

  1. “德克萨斯州林肯县威尔伯银行的 jack ·史密斯”
  2. “ jack ·史密斯,银行,信贷,银行,威尔伯,德克萨斯州林肯县”
  3. “Jack Smith, Bank, Union, Credit, Bank, Wilber, Lincoln County, Texas, Branch, Landing, Services”
  4. “ jack ·史密斯,银行,信贷,银行,威尔伯,分行,登陆,服务”

之后:

  1. “ jack ·史密斯,银行”
  2. “ jack ·史密斯,银行”
  3. “ jack ·史密斯,银行,工会
  4. “ jack ·史密斯,银行,信贷,银行,威尔伯,分行,登陆,服务”

感谢您的帮助!

最佳答案

使用maskstr.contains()对具有指定条件的行进行操作,然后使用如下操作:.str.split (', ').str[0:2].agg(', '.join)):

df['Col'] = df['Col'].mask(df['Col'].str.contains('County, Texas'),
                           df['Col'].str.split(', ').str[0:2].agg(', '.join))

完整代码:

import pandas as pd
df = pd.DataFrame({'Col': {0: 'Jack Smith, Bank, Wilber, Lincoln County, Texas',
  1: 'Jack Smith, Union, Credit, Bank, Wilber, Lincoln County, Texas',
  2: 'Jack Smith, Union, Credit, Bank, Wilber, Lincoln County, Texas, Branch, Landing, Services',
  3: 'Jack Smith, Union, Credit, Bank, Wilber, Branch, Landing, Services'}})
df['Col'] = df['Col'].mask(df['Col'].str.contains('County, Texas'),
                           df['Col'].str.split(', ').str[0:2].agg(', '.join))                            
df
Out[1]: 
                                                 Col
0                                   Jack Smith, Bank
1                                  Jack Smith, Union
2                                  Jack Smith, Union
3  Jack Smith, Union, Credit, Bank, Wilber, Branc...

根据更新的问题,您可以使用 np.select:

import pandas as pd
df = pd.DataFrame({'Col': {0: 'Jack Smith, Bank, Wilber, Lincoln County, Texas',
  1: 'Jack Smith, Bank, Credit, Bank, Wilber, Lincoln County, Texas',
  2: 'Jack Smith, Bank, Union, Credit, Bank, Wilber, Lincoln County, Texas, Branch, Landing, Services',
  3: 'Jack Smith, Bank, Credit, Bank, Wilber, Branch, Landing, Services'}})
df['Col'] = np.select([df['Col'].str.contains('County, Texas') & ~df['Col'].str.contains('Union'),
                       df['Col'].str.contains('County, Texas') & df['Col'].str.contains('Union')],
                      [df['Col'].str.split(', ').str[0:2].agg(', '.join),
                       df['Col'].str.split(', ').str[0:3].agg(', '.join)],
                       df['Col'])                            
df
Out[2]: 
                                                 Col
0                                   Jack Smith, Bank
1                                   Jack Smith, Bank
2                            Jack Smith, Bank, Union
3  Jack Smith, Bank, Credit, Bank, Wilber, Branch...

关于Python:如何删除字符串左侧第二个逗号后的所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64722864/

相关文章:

python - 为 web2py 应用程序安装 Python 模块

javascript - 如何在 ipython qtconsole 中打开括号的自动完成

pandas - 根据列值的长度过滤数据框行

python - Numpy、Pandas 和 Sklearn 中的多维缩放拟合(ValueError)

python - pd.get_dummies wrt 特定列

python - 使用 open cv 读取图像时遇到问题

python - 如何在Python中使用Elasticsearch索引JSON格式的文件?

Python -> 标签无法显示到框架

python - 如何轻松区分Python中的属性和方法?

python - 用列最大值填充 NaNs