选择要加载的2个列范围 - pandas中的read_csv

时间:2016-12-06 13:12:58

标签: python pandas

我正在使用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个大范围才能读入...

2 个答案:

答案 0 :(得分:3)

我不确定是否有一种官方的漂亮熊猫式的方式与大熊猫一起做。

但是,你可以这样做:

# 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)

答案 1 :(得分:2)

正如@jezrael所指出的,您可以使用numpy.r以更加蟒蛇和清晰的方式进行操作

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结合使用时,请注意,熊猫允许为索引ie添加额外的列。对于CSV列1,2,3(3个项目),np.r_必须为0:3(4个项目)