Python 数据框列名的格式不符合预期
我有一个pandas数据框,它是从excel(.xlsx)文件创建的。使用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
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中添加双空格。它不是双空格。我彻底检查了一下。它是一个单独的空格,但不知怎么的,并没有被正则表达式所取代