从 Pandas Dataframe 的文本记录中删除 _x000D_

问题描述 投票:0回答:3

我有一个从 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) 
python python-3.x excel pandas data-cleaning
3个回答
2
投票

您必须添加

.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

1
投票

我在从 xlsx 文件加载包含回车符的文本列时也遇到了这个问题。

这为我解决了这个问题:

df['my_col'] = df['my_col'].astype(str).apply(openpyxl.utils.escape.unescape)

0
投票

如果您需要处理数据框中的所有字符串列(就像我需要的那样):

for str_col in df.select_dtype(include=['object']).columns:
    df[str_col] = df[str_col].astype(str).apply(openpyxl.utils.escape.unescape)

或与

replace()
功能相同

© www.soinside.com 2019 - 2024. All rights reserved.