我正在处理这个 csv 文件,其中有一个列,我可以在 csv 查看器中清楚地看到它的内容:
当我在 VSC 中打印行时,我得到以下信息:
但是当我打印数据框时,我得到:
我进行了研究,发现这可能是某种
ascii non readable character
。所以我尝试删除它:
df['Partnumber'] = df['Partnumber'].replace(regex=r'[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]', value='')
但我仍然得到
NaN
。
我对从外部合作伙伴收到的文件也有同样的经历。我的解决方案是:
df['Partnumber'] = df['Partnumber'].apply(lambda x: x.encode('ascii', 'ignore').decode('ascii'))
或
df['Partnumber'] = df['Partnumber'].apply(lambda x: x.encode('ascii', 'replace').decode('ascii'))
由于这种情况经常发生,我在
utils.py
文件中创建了一个函数
def csv_cleaner(text):
return text.encode('ascii', 'ignore').decode('ascii')
我导入的
import pandas as pd
from utils import csv_cleaner
df = pd.read_csv('path_to_your_file.csv', converters={'Partnumber': csv_cleaner})