使用熊猫从Excel文件中读取最后一列

时间:2019-02-21 07:25:56

标签: python pandas

就像how to read certain columns from Excel using Pandas - Python,但有点复杂。

说我有一个名为“ foo.xlsx”的Excel文件,它随着时间的推移而增长-每个月都会在右边添加一个新列。但是,当我阅读它时,我只需要前两列和最后一列。我期望usecols参数可以解决此问题,所以我去了df = pd.read_excel("foo.xlsx", usecols=[0, 1, -1]),但它只给我前两列。

我的解决方法竟然是:

df = pd.read_excel("foo.xlsx")
df = df[df.columns[[0, 1, -1]]]

但是它每次都需要读取整个文件。有什么办法可以在读取文件时获取所需的数据帧?谢谢。

3 个答案:

答案 0 :(得分:1)

一个想法是得到column count并传递给usecols

from openpyxl import load_workbook

path = "file.xlsx"

wb = load_workbook(path)
sheet = wb.worksheets[0]
column_count = sheet.max_column
print (column_count)

或仅读取文件的第一行:

column_count  = len(pd.read_excel(path, nrows=0).columns)

df = pd.read_excel(path, usecols=[0, 1, column_count-1])
print (df)

答案 1 :(得分:0)

如果您真的想这样做(请参阅上面的评论),可以这样做:

ObjectType

此解决方案不会两次读取excel文件。

答案 2 :(得分:-1)

您可以使用df.head()和df.tail()读取前两行和最后一行。例如:

df = pd.read_excel("foo.xlsx", sheet_name='ABC')
#print the first 2 column
print(df.head(2))
#print the last column
print(df.tail(1))

编辑:糟糕,上面的代码读取行而不是列。是的,您必须每次都读取文件。我不认为可以读取部分文件。

对于阅读专栏,也许您可​​以这样做

df['Column Name'][index]