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

Rak*_*van 9 python pandas

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

import pandas as pd

xl = pd.ExcelFile("Path + filename")
df = xl.parse("Sheet1")
Run Code Online (Sandbox Code Playgroud)

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

Rut*_*ies 10

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

df.columns = ['W','X','Y','Z']
Run Code Online (Sandbox Code Playgroud)

如果你事先知道Excelfile中的标题是什么,最好重命名它们,这会将W重命名为A等:

df.rename(columns={'W':'A', 'X':'B', etc})
Run Code Online (Sandbox Code Playgroud)

  • 我的问题是Excel文件的第一行包含有效数据而不是列名.所以使用"df.columns = ['W','X','Y','Z']"我会丢失数据...所以我需要在现有数据的顶部附加col名称然后更改col名称.... (2认同)

fal*_*tru 7

打电话.parseheader=None关键字参数.

df = xl.parse("Sheet1", header=None)
Run Code Online (Sandbox Code Playgroud)


cod*_*eze 7

如果 Excel 工作表仅包含没有标题的数据:

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

如果 Excel 工作表已包含标题名称,则使用skiprows跳过该行:

df=pd.read_excel("the excel file",header=None,names=["A","B","C"],skiprows=1)
Run Code Online (Sandbox Code Playgroud)


ram*_*ram 6

该线程已有5年的历史,现在已经过时了,但仍然显示在常规搜索列表的顶部。因此,我要添加此注释。现在的熊猫(v0.22)具有一个关键字,可以在解析Excel文件时指定列名称。使用:

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

如果未设置header = None,则pd似乎将第一行视为标题,并在解析期间将其删除。如果确实有标头,但您不想使用它,则有两种选择,一种是(1)仅使用“名称” kwarg。或(2)使用headers = None和skiprows = 1的“名称”。我个人更喜欢第二种选择,因为它清楚地表明输入文件不是我想要的格式,并且我正在做一些处理。


Lok*_*oku 6

正如 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. 
Run Code Online (Sandbox Code Playgroud)