在pandas dataframe中选择具有间隔的多个列

时间:2018-01-03 05:28:28

标签: python pandas

假设我有一个包含以下列的pandas数据帧:

ABCDEFGH

我想选择具有特定间隔的所有列,例如 n 。例如,如果 n = 2 并且我从A开始,我会选择:

ABEF(选择前两个,删除后两个,依此类推)

如果我从头开始,我会选择:

HGDC

我甚至可以从中间的任何随机列开始。这样做的有效方法是什么?

2 个答案:

答案 0 :(得分:2)

压缩和循环,即

from itertools import compress,cycle


ndf = pd.DataFrame(pd.np.random.randn(2,6), columns = ['A','B','C','D','E','F'])

ndf[list(compress(ndf.columns,cycle([True]*2 + [False]*2)))]

          A         B         E         F
0  0.833114 -0.616667 -0.908963 -0.486292
1  1.285927 -0.335325  0.562466  1.218459

答案 1 :(得分:0)

我会将您的逻辑写入函数,然后使用该函数遍历列。 例如,要使用n2,请使用列表切片语法[start:stop:step]来遍历dataframe.columns

df = pd. DataFrame() # insert creation code here
cols = [c for c in df.columns[::2] ]
df.loc[:,cols] # result

编辑根据评论这是错误的。 要跳过列,可以检查列位置的mod。

[val for num, val in enumerate(df.columns) 
if num % 4 in [0,1]]

我在手机上这样做很抱歉,如果没有那么好的格式化