就像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]]]
但是它每次都需要读取整个文件。有什么办法可以在读取文件时获取所需的数据帧?谢谢。
答案 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]