【问题标题】:Select 2 ranges of columns to load - read_csv in pandas选择要加载的 2 个列范围 - pandas 中的 read_csv
【发布时间】:2025-12-05 02:50:01
【问题描述】:

我正在使用 pandas.read_csv() 读取 excel .csv 文件。我想读取 excel 电子表格的 2 个单独的列范围,例如A:D 和 H:J 列出现在最终的 DataFrame 中。我知道在使用索引加载文件后我可以做到这一点,但我可以指定 2 个要加载的列范围吗?

我已经尝试过这样的事情......

usecols=[0:3,7:9]

我知道我可以单独列出每个列号,例如

usecols=[0,1,2,3,7,8,9]

但是我已经简化了有问题的文件,在我的真实文件中我有大量的行,所以我需要能够选择 2 个大范围来读取...

【问题讨论】:

  • 检查函数numpy.r_
  • @jezrael 谢谢,已添加为答案

标签: python pandas


【解决方案1】:

我不确定是否有官方漂亮的熊猫方式来处理熊猫。

但是,你可以这样做:

# say you want to extract 2 ranges of columns
# columns 5 to 14 
# and columns 30 to 66

import pandas as pd

range1 = [i for i in range(5,15)]
range2 = [i for i in range(30,67)]
usecols = range1 + range2

file_name = 'path/to/csv/file.csv'

df = pd.read_csv(file_name, usecols=usecols)

【讨论】:

  • 您不需要列表理解。只需使用usecols = list(range(5,15)) + list(range(30,67))
【解决方案2】:

正如@jezrael 所说,您可以使用numpy.r 以更 Python 和易读的方式执行此操作

import pandas as pd
import numpy as np
file_name = 'path/to/csv/file.csv'
df = pd.read_csv(file_name, usecols=np.r_[0:3, 7:9])

陷阱names 结合使用时要小心,您已允许 pandas 为索引添加的额外列,即。对于 csv 列 1、2、3(3 项)np.r_ 需要为 0:3(4 项)

【讨论】:

    最近更新 更多