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

时间:2013-06-27 06:05:25

标签: python pandas

我以这种方式将Excel表格读入pandas DataFrame:

import pandas as pd

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

选择每列的第一个单元格的值作为dataFrame的列名,我想指定自己的列名,我该怎么做?

5 个答案:

答案 0 :(得分:7)

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

df.columns = ['W','X','Y','Z']

如果事先知道Excelfile中的标题是重命名它们可能更好,这会将W重命名为A等:

df.rename(columns={'W':'A', 'X':'B', etc})

答案 1 :(得分:7)

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

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

答案 2 :(得分:5)

此主题已有5年历史,现已过时,但仍会显示在通用搜索列表的顶部。所以我要添加这个说明。 Pandas now(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)使用"名称"只有kwarg;或(2)使用"名称" with header = None和skiprows = 1。我个人更喜欢第二个选项,因为它清楚地表明输入文件不是我想要的格式,而且我正在做一些事情来解决它。

答案 3 :(得分:1)

如果excel工作表仅包含不带标题的数据
df = pd.read_excel(“ excel文件”,header = None,names = [“ A”,“ B”,“ C”])

如果excel工作表中已经包含标题名称,请使用“ skiprows”跳过该行
df = pd.read_excel(“ excel文件”,header = None,names = [“ A”,“ B”,“ C”],skiprows = 1)

答案 4 :(得分:0)

正如Ram所说,这篇文章位于顶部,可能对某些人有用。 在pandas 0.24.2(可能更早)中,read_excel本身可以忽略源标头,并提供自己的col名称和一些其他好的控件:

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.