Python 数据框列名的格式不符合预期

Python 数据框列名的格式不符合预期,python,pandas,Python,Pandas,我有一个pandas数据框,它是从excel(.xlsx)文件创建的。使用df=pd.read\u excel() excel文档中的一个列名是:原始出厂日期 我正在尝试删除所有特殊字符和空格,因为我将在Spark中以Avro格式保存此文件 我正在执行以下操作来清理列名: df.columns = df.columns.str.replace('(', '') df.columns = df.columns.str.replace(')', '') df.columns = df.columns

我有一个pandas数据框,它是从excel(.xlsx)文件创建的。使用
df=pd.read\u excel()

excel文档中的一个列名是:
原始出厂日期

我正在尝试删除所有特殊字符和空格,因为我将在Spark中以Avro格式保存此文件

我正在执行以下操作来清理列名:

df.columns = df.columns.str.replace('(', '')
df.columns = df.columns.str.replace(')', '')
df.columns = df.columns.str.replace('=', '')
df.columns = df.columns.str.replace('-', '_')
df.columns = df.columns.str.replace('/', '_')
df.columns = df.columns.str.replace('Â', '__')
df.columns = df.columns.str.replace(' ', '_')
在完成上述转换后,我留下了上面的列名:

原始出厂日期

它不会删除出厂日期之前的空格。您可以看到,所有其他空白都被
\uu
替换

我甚至试着使用Unicode数据

def remove_accents(input_str):
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    only_ascii = nfkd_form.encode('ASCII', 'ignore')
    return only_ascii

for col in df.columns:
    print(col)
    neutral = remove_accents(col)
    print(normal)
它返回的是相同的内容:
原始出厂日期


关于为什么这个wihtespace没有被移除,我有什么遗漏吗?我需要一个干净的列名。

很可能,您的空格不是ASCII空格字符,而是许多Unicode空格字符中的一个(请参阅此详细答案)。此代码应替换您的空白:

# .str.replace supports regular expressions by default
df.columns = df.columns.str.replace('\s', '_')

它可能是一个双空间。尝试在
df.columns=df.columns.str.replace('''.'.''.')
@MaheryRanaivoson中添加双空格。它不是双空格。我彻底检查了一下。它是一个单独的空格,但不知怎么的,并没有被正则表达式所取代