在 Pandas DataFrame 中选择多个列范围

43

我需要阅读一些文件,其中一些是Excel格式,另一些是CSV格式。有些文件有数百列。

是否有一种方法可以选择多个列范围而不必指定所有的列名或位置?例如选择1-10、15、17和50-100列的某些内容:

df = df.ix[1:10, 15, 17, 50:100]

我需要知道如何在从Excel文件和CSV文件创建数据框时以及创建数据框后执行此操作。

3个回答

90

使用np.r_函数。

np.r_[1:10, 15, 17, 50:100]

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 15, 17, 50, 51, 52, 53, 54, 55,
       56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
       73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
       90, 91, 92, 93, 94, 95, 96, 97, 98, 99])

所以您可以这样做

df.iloc[:, np.r_[1:10, 15, 17, 50:100]]

这也适用于过滤行。非常好,谢谢! - Pablo Adames

0

我认为@piRSquared的答案很直接。

你也可以使用:

Locs = list(range(0,10)) + [14, 16] + list(range(49, 100))
# columns 1 -10, 15, 17 and 50-100
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 16, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

df = df.iloc[:Locs]

-3

使用内连接 例如 result = pd.concat([df1, df4], axis=1, join="inner")


2
虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接