如何使用Pandas读取Excel文件时指定列名?

22

我这样将 Excel 表格读入 pandas DataFrame:

import pandas as pd

xl = pd.ExcelFile("Path + filename")
df = xl.parse("Sheet1")

每列的第一个单元格的值被选作数据框的列名,我想要指定自己的列名,应该怎么做?

5个回答

18

这个帖子已经五年了,现在已经过时了,但仍然会在通用搜索中排在列表的顶部。因此,我添加了这个说明。Pandas现在(v0.22)有一个关键字来指定在解析Excel文件时的列名。使用:

import pandas as pd
xl = pd.ExcelFile("Path + filename")
df = xl.parse("Sheet 1", header=None, names=['A', 'B', 'C'])

如果未设置header=None,pd似乎会将第一行视为标题并在解析过程中将其删除。 如果确实有标题但不想使用它,则有两个选择:(1)仅使用“names” kwarg;或者(2)同时使用“names”和header=None以及skiprows=1。我个人更喜欢第二个选项,因为它清楚地表明输入文件不符合期望的格式,并且我正在采取措施绕过它。


感谢您和其他回答者添加了有关跳过标题行的附加说明,这些说明虽然不是 OP 的问题的一部分,但对于像我们这样的初学者在 Python 中读取 Excel 非常重要,因为我们通过这个问题来到这里。 - Roland

16

正如Ram所说,这篇文章排在前面,对一些人可能很有用...... 在pandas 0.24.2(也可能更早)中,read_excel本身就有忽略源头信息、给予自己列名和其他一些好的控制的功能:

DID = pd.read_excel(file1, sheet_name=0, header=None, usecols=[0, 1, 6], names=['A', 'ID', 'B'], dtype={2:str}, skiprows=10)

# for example....
# usecols => read only specific col indexes
# dtype => specifying the data types
# skiprows => skip number of rows from the top. 

14

我认为在这种情况下,将它们设置为之后是唯一的方法。例如,如果您的DataFrame中有四列:

df.columns = ['W','X','Y','Z']
如果你事先知道Excel文件中的标题,最好将它们重命名,这样就可以将W重命名为A等等。
df.rename(columns={'W':'A', 'X':'B', etc})

4
我的问题是Excel文件的第一行包含有效数据而不是列名。所以使用"df.columns = ['W','X','Y','Z']"会导致丢失数据...因此我需要在现有数据顶部附加列名,然后再更改列名... - Rakesh Adhikesavan

10

使用header=None关键字参数调用.parse

df = xl.parse("Sheet1", header=None)

7

如果Excel表格中只包含数据而没有标题:

df=pd.read_excel("the excel file",header=None,names=["A","B","C"])

如果Excel表格已经包含标题名称,则使用 skiprows 跳过该行:
df=pd.read_excel("the excel file",header=None,names=["A","B","C"],skiprows=1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接