我这样将 Excel 表格读入 pandas DataFrame:
import pandas as pd
xl = pd.ExcelFile("Path + filename")
df = xl.parse("Sheet1")
每列的第一个单元格的值被选作数据框的列名,我想要指定自己的列名,应该怎么做?
这个帖子已经五年了,现在已经过时了,但仍然会在通用搜索中排在列表的顶部。因此,我添加了这个说明。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。我个人更喜欢第二个选项,因为它清楚地表明输入文件不符合期望的格式,并且我正在采取措施绕过它。
正如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.
我认为在这种情况下,将它们设置为之后是唯一的方法。例如,如果您的DataFrame中有四列:
df.columns = ['W','X','Y','Z']
如果你事先知道Excel文件中的标题,最好将它们重命名,这样就可以将W重命名为A等等。df.rename(columns={'W':'A', 'X':'B', etc})
使用header=None
关键字参数调用.parse
。
df = xl.parse("Sheet1", header=None)
如果Excel表格中只包含数据而没有标题:
df=pd.read_excel("the excel file",header=None,names=["A","B","C"])
skiprows
跳过该行:df=pd.read_excel("the excel file",header=None,names=["A","B","C"],skiprows=1)