我有一个从 Excel 文件导入的 Pandas 数据框。其中一列如下所示:
Link
=========
A-324
A-76_x000D_\nA-676
A-95
A-95_x00D_n\nA-495
...
我可以使用正则表达式删除
\n
字符,但无法删除 _x000D_
。有谁知道这是什么?为什么我无法使用传统的删除方法?
这是我所做的:
dat['Link'] = dat['Link'].replace("_x000D_", " ")
dat['Link'] = dat['Link'].replace(r'\s+|\\n', ' ', regex=True)
您必须添加
.str
,因为您不是直接使用字符串,而是使用系列:
dat = pd.DataFrame({'Link':['A-324','A-76_x000D_\nA-676','A-95','A-95_x000D_n\nA-495']})
dat['Link'] = dat['Link'].str.replace("_x000D_", " ")
dat['Link'] = dat['Link'].replace(r'\s+|\\n', ' ', regex=True)
输出:
Link
0 A-324
1 A-76 A-676
2 A-95
3 A-95 n A-495
我在从 xlsx 文件加载包含回车符的文本列时也遇到了这个问题。
这为我解决了这个问题:
df['my_col'] = df['my_col'].astype(str).apply(openpyxl.utils.escape.unescape)
如果您需要处理数据框中的所有字符串列(就像我需要的那样):
for str_col in df.select_dtype(include=['object']).columns:
df[str_col] = df[str_col].astype(str).apply(openpyxl.utils.escape.unescape)
或与
replace()
功能相同