15

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

import pandas as pd

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

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

4

5 回答 5

14

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

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

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

df.rename(columns={'W':'A', 'X':'B', etc})
于 2013-06-27T06:12:47.500 回答
13

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

于 2018-04-20T14:21:17.193 回答
11

正如 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. 
于 2019-04-11T00:40:44.407 回答
10

call .parse with header=None keyword argument.

df = xl.parse("Sheet1", header=None)
于 2013-06-27T06:25:45.937 回答
2

如果 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)

于 2020-08-04T06:11:41.100 回答