【问题标题】:split a string from a set of substrings in panda frames从熊猫帧中的一组子字符串中拆分一个字符串
【发布时间】:2018-07-13 14:56:43
【问题描述】:

我正在处理来自各种来源的数据集,我的列是捕获例如城市名称的框架。某些城市名​​称在括号中带有州名,其他城市名称带有邮政编码。如何获取这些额外信息并仅保留城市名称? Example of data

在某些情况下,邮政编码和城市名称之间没有空格。 下面是所需的框架: Desired frame

【问题讨论】:

  • 我正在寻找一种简单的方法来从 ' (' 或 0-9 之间的数字中删除字符串
  • 请在问题中包含您的所有数据(不要粘贴到屏幕截图的链接)。还包括您的所有代码和特定代码相关问题。
  • 数据很大,但这里有一个例子 df = pd.DataFrame([{'City Name': 'Dallas'} ,{'City Name': 'New York (NY)' } ,{'City Name': 'West Orange 07052'} ,{'City Name': 'Orlando (Florda)'} ,{'City Name': 'Camdem (NJ)'} ,{'City Name': ' Boston'} ,{'City Name': 'Harrison07029'}]) 我只想获取城市名称
  • 正如我所说,请在问题中包含所有相关数据,而不是在 cmets 中。添加您尝试使用的代码,解释您对它不满意的原因,并提出具体问题。这就是 SO 的工作原理。
  • 对不起,DYZ,我在这里很新。我试图使用从一个子字符串中拆分出来的 lambda 并将其应用于熊猫,但它不起作用。 jezrael 提供的响应有效

标签: python string pandas


【解决方案1】:

您可以通过正则表达式使用replace

  • \s* 一个或零个空格
  • \d+ 一位或多位数字
  • \(.*\) + 括号之间的所有字符串

df = pd.DataFrame([{'City Name': 'Dallas'} ,
                   {'City Name': 'New York (NY)'} ,
                   {'City Name': 'West Orange 07052'} ,
                   {'City Name': 'Orlando (Florda)'} ,
                   {'City Name': 'Camdem (NJ)'} ,
                   {'City Name': 'Boston'} ,
                   {'City Name': 'Harrison07029'}])

df['new'] = df['City Name'].replace(['\s*\d+', '\s*\(.*\)'], '', regex=True)
print (df)
           City Name          new
0             Dallas       Dallas
1      New York (NY)     New York
2  West Orange 07052  West Orange
3   Orlando (Florda)      Orlando
4        Camdem (NJ)       Camdem
5             Boston       Boston
6      Harrison07029     Harrison

【讨论】:

  • 谢谢你,这行得通,我试图使用拆分,忘记了替换。
猜你喜欢
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 2018-04-18
  • 2020-09-05
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多