使用usecols时出现pandas.read_excel错误

时间:2019-03-19 10:39:52

标签: python pandas python-2.7 python-unicode pandas-datareader

从Excel文件读取数据时遇到问题。 Excel文件包含带有Unicode字符的列名。

由于某些自动化原因,我需要将 usecols 参数传递给pandas.read_excel函数。

问题在于,当我不使用 usecols 参数时,数据加载不会出错。

代码如下:

{
    'servers': 
    {
        'unix_servers': 
        {
            'server_group': 
            {
                'server_f': '10.0.0.6', 
                'server_e': '10.0.0.5'
            }, 
            'server_b': '10.0.0.2',
            'server_a': '10.0.0.1'
        }, 
        'windows_servers': 
        {
            'server_c': '10.0.0.3', 
            'server_d': '10.0.0.4'
        }
    }
}

如果我使用usecols:

import pandas as pd

df = pd.read_excel(file)
df.colums

Index([u'col1', u'col2', u'col3', u'col with unicode à', u'col4'], dtype='object')

我收到以下错误:

COLUMNS = ['col1', 'col2', 'col with unicode à']
df = pd.read_excel(file, usecols = COLUMNS)

使用ValueError: Usecols do not match columns, columns expected but not found: ['col with unicode \xc3\xa0'] 作为read_excel的参数不能解决该问题,并且还可以对COLUMNS元素进行编码。

编辑:这是完整的错误窗口。

encoding = 'utf-8'

3 个答案:

答案 0 :(得分:3)

此方法对于选择excel列非常有效:

使用数字的第一种情况,“ A”列= 0,“ B”列= 1,依此类推。

df = pd.read_excel("filename.xlsx",usecols= range(0,5))

使用字母的第二种情况:

df = pd.read_excel("filename.xlsx",usecols= "A, C, E:J")

答案 1 :(得分:0)

首先阅读

之类的列
df = pd.read_excel(file, usecols="A:D")

其中A:D是您要读取的excel中的列范围,然后像这样重命名您的列

df.columns = ['col1', 'col2', 'col3', 'col4']

然后相应地访问列

答案 2 :(得分:0)

如果要按特定的列名读取excel文件,请使用“ usecol”遵循以下示例代码:

> df = pd.read_excel("filename.xlsx",usecols=["col_name1", "col_name2", "col_name3"])
> print(df)