阅读 excel 框架时跳过特定的列集 - 熊猫

Posted

技术标签:

【中文标题】阅读 excel 框架时跳过特定的列集 - 熊猫【英文标题】:Skip specific set of columns when reading excel frame - pandas 【发布时间】:2018-09-15 13:38:24 【问题描述】:

我事先知道我不需要 Excel 文件中的哪些列,并且我想在读取文件时避免使用它们以提高性能。像这样的:

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

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

【问题讨论】:

可以改用usecols参数吗? @Aran-Fey 有可能,但与未使用的列列表相比,要使用的列列表会非常大(160 对 30) 您知道要跳过的列的索引(位置)吗? @MaxU 是的。我可以确定要跳过的列的索引 重复***.com/questions/24366449/… 【参考方案1】:

如果您的熊猫版本允许(首先检查您是否可以将函数传递给 usecols),我会尝试类似:

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

这应该会跳过所有没有标题名称的列。您可以用您不想要的列名列表替换“未命名”。

【讨论】:

请注意usecols 接受列字母作为参数:usecols = "A,C:AA"【参考方案2】:

您可以使用以下技术。让我们不想(想跳过)的列是 2 5 8,然后找到我们 DO WANT TO KEEPcols 的所有重复列,这样:

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)

【讨论】:

我认为这比@MarMat 更“Pythonic”,因为它在 2 行中使用可读的列表理解,而其他使用 lambda。如果您可以使用列表推导,我的理解总是避免在 Python 中使用 lambda,而 lambda 很少快得多。如果您希望其他人更快地理解您的代码,恕我直言,这将更容易。如果您正在处理 Excel 并且发现其中一列是二进制图像字符串(我经常会遇到这种情况),这非常有用!

以上是关于阅读 excel 框架时跳过特定的列集 - 熊猫的主要内容,如果未能解决你的问题,请参考以下文章

在 Beautifulsoup 中执行 findAll() 时跳过特定元素的内容

阅读excel时大熊猫的AssertionError

是否可以将 .gzip 文件导入 sqlite / 我可以在导入时跳过某些列吗?

显示报告时跳过无效日期

在 NGINX 中执行 301 重定向时跳过参数

根据熊猫数据框中的列标签对数据进行分组