使用“||”处理一些经过深思熟虑的数据作为单个字符串中的分隔符。我有一个超过60张的excel文件和100k个人记录,其中包含这些'||'分离利益。例如:
email interests
info@test.com Sports||IT||Business||Other
我已经尝试使用以下代码来替换管道,但它似乎不起作用..管道被认为是一个特殊字符?谷歌搜索没有为我提供Python特定的结果。
import pandas as pd
df = pd.read_excel("test.xlsx")
df["interests"] = df["interests"].replace('||', ' , ')
出于某种原因使用str.replace只是在每个单独的字符之间添加了一些逗号
我可以在excel中使用一些宏/函数来做这个,但我真的想学习Python / Pandas到一个很好的水平,因此我的问题给你的大师!
任何帮助将不胜感激!
干杯, DN。
答案 0 :(得分:3)
Series.replace(..., regex=False, ...)默认使用regex=False
,这意味着它会尝试替换整个单元格值。
演示:
In [25]: df = pd.DataFrame({'col':['ab ab', 'ab']})
In [26]: df
Out[26]:
col
0 ab ab
1 ab
In [27]: df['col'].replace('ab', 'XXX')
Out[27]:
0 ab ab # <--- NOTE!
1 XXX
Name: col, dtype: object
In [28]: df['col'].replace('ab', 'ZZZ', regex=True)
Out[28]:
0 ZZZ ZZZ
1 ZZZ
Name: col, dtype: object
所以不要忘记使用regex=True
参数:
In [23]: df["interests"] = df["interests"].replace('\|\|', ' , ', regex=True)
In [24]: df
Out[24]:
email interests
0 info@test.com Sports , IT , Business , Other
或使用Series.str.replace()始终将其视为RegEx:
df["interests"] = df["interests"].str.replace('\|\|', ' , ')
PS旁边的|
is a special RegEx symbol,意思是OR
,所以我们需要用反斜杠字符来逃避它