【发布时间】:2021-12-10 05:43:58
【问题描述】:
我正在尝试使包含数千分之一记录的相当混乱的电话簿 xls 合理化。有些字段会与其他字段合并和/或保存到错误的列中,而其他字段则被分成 2 个或更多字段......等等。我正在尝试找到主要错误的路径并通过正则表达式解决这些问题,将正确的记录放入右列。 一个例子: DataFrame 为 df:
| id | Name | SecondName | Surname | Title | Company |
|---|---|---|---|---|---|
| 01 | Marc | Gigio | ETC ltd | ||
| 02 | Piero (Four | Season | Restaurant | ) | |
| 03 | bubbu(Caterpilar) | ||||
| 04 | gaby(ts Inc) | ||||
| 05 | Pit(REV inc) | REV Inc | |||
| 06 | Pluto |
-
在记录 01 中:无事可做,但请参阅第 5 点如何管理条件异常。
-
在记录 02 中:合并 Name + SecondName + Surname ,然后从新字符串中提取名称(Piero)放置在 Name 列中,同时从同一字符串中提取方括号的内容并将其放入 Company 列中
df['Nameall_tmp'] = df[姓名]+' '+df[SecondName]+' '+df[姓氏]+' '+df[公司] df['Name_tmp'] = df[Nameall_tmp].str.extract(r'(.+)(.+') df['Company_tmp'] = df[Nameall_tmp].str.extract(r'.*((.+))')
-
在记录 03 和 04:几乎是 02
-
在记录 06 中: df['Nameall_tmp'] = df[Name]+' '+df[SecondName]+' '+df[Surname]+' '+df[Company] df['Name_tmp'] = df['Nameall_tmp'].str.extract(r'(.+)(.+') df['Name_tmp']= np.where(df['Name_tmp'] == 'nan' , df['Name'],df['Name_tmp'] )
在这种情况下 np.where 语句不像 if then else 那样工作,为了检查 df['Name_tmp'] 是否为“nan”,在这种情况下,填写原始 df['Name'] 以消除记录中的“nan”,否则取 df['Name_tmp']。有什么建议吗?
【问题讨论】:
-
不知道您可以在这里渲染表格。学到东西了,谢谢
-
;-) 我几乎是一个备用的新的!
-
您解决了问题还是需要更多帮助?
-
Eliu 的解决方案非常强大,并且可以提供广泛的定制解决方案!有了这个技巧,我可以进一步解决其他情况......只需要在 rex 变量的分配中完善他的正则表达式建议。我需要的是查找和研究有关 Regex 如何在数据框中创建列的文档。这对我来说是完全缺失的。谢谢你,Wiktor