假设我有一个包含以下列的pandas数据帧:
A
,B
,C
,D
,E
,F
,G
,H
我想选择具有特定间隔的所有列,例如 n 。例如,如果 n = 2 并且我从A
开始,我会选择:
A
,B
,E
,F
(选择前两个,删除后两个,依此类推)
如果我从头开始,我会选择:
H
,G
,D
,C
我甚至可以从中间的任何随机列开始。这样做的有效方法是什么?
答案 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]]
我在手机上这样做很抱歉,如果没有那么好的格式化