Python 读取excel框架时跳过特定的列集

Python 读取excel框架时跳过特定的列集,python,excel,python-3.x,pandas,Python,Excel,Python 3.x,Pandas,我事先知道excel文件中不需要哪些列,我希望在读取文件时避免使用这些列以提高性能。大概是这样的: import pandas as pd df = pd.read_excel('large_excel_file.xlsx', skip_cols=['col_a', 'col_b',...,'col_zz']) 文档中没有与此相关的内容。有什么解决方法吗?您可以使用以下技术。让我们不想要(想要跳过)的列为2 5 8,然后找到我们想要保留为cols的所有列,以便: In [7]: cols2sk

我事先知道excel文件中不需要哪些列,我希望在读取文件时避免使用这些列以提高性能。大概是这样的:

import pandas as pd
df = pd.read_excel('large_excel_file.xlsx', skip_cols=['col_a', 'col_b',...,'col_zz'])

文档中没有与此相关的内容。有什么解决方法吗?

您可以使用以下技术。让我们不想要(想要跳过)的列为2 5 8,然后找到我们想要保留为
cols
的所有列,以便:

In [7]: cols2skip = [2,5,8]  
In [8]: cols = [i for i in range(10) if i not in cols2skip]

In [9]: cols
Out[9]: [0, 1, 3, 4, 6, 7, 9]
然后我们可以使用
usecols
,使用那些剩余的列(我们希望保留这些列):

df = pd.read_excel(filename, usecols=cols)

如果您的pandas版本允许(首先检查是否可以将函数传递给usecols),我会尝试以下方法:

import pandas as pd
df = pd.read_excel('large_excel_file.xlsx', usecols=lambda x: 'Unnamed' not in x,)

这应该跳过所有没有标题名的列。您可以用不需要的列名列表替换“Unnamed”

您可以改用
usecols
参数吗?@Aran Fey这是可能的,但是与未使用的列列表(160对30)相比,要使用的列列表将非常大。您知道要跳过的列的索引(位置)吗?@MaxU Yes。我可以确定要跳过的列的索引,注意,
usecols
接受列字母作为参数:usecols=“A,C:AA”我认为这比@MarMat更“Pythonic”,因为它使用两行可读列表理解,其他使用lambda。我的理解是,如果您可以使用列表理解,那么在Python中总是避免使用lambda,并且lambda很少更快。如果你想让别人更快地理解你的代码,这会更容易。如果您正在处理Excel,并且发现其中一列是二进制图像字符串(我经常意外地得到),这是非常有用的!