删除Pandas

时间:2017-02-08 14:54:04

标签: python pandas dataframe

我想删除DataFrame中的一组相邻列,我的代码目前看起来像这样:

del df['1'], df['2'], df['3'], df['4'], df['5'], df['6']

这很有效,但我想知道是否有更高效,更紧凑或美学上令人愉悦的方式,例如:

del df['1','6']

2 个答案:

答案 0 :(得分:0)

我认为您需要drop,以便选择使用rangenumpy.arange

df = pd.DataFrame({'1':[1,2,3],
                   '2':[4,5,6],
                   '3':[7,8,9],
                   '4':[1,3,5],
                   '5':[7,8,9],
                   '6':[1,3,5],
                   '7':[5,3,6],
                   '8':[5,3,6],
                   '9':[7,4,3]})

print (df)
   1  2  3  4  5  6  7  8  9
0  1  4  7  1  7  1  5  5  7
1  2  5  8  3  8  3  3  3  4
2  3  6  9  5  9  5  6  6  3

print (np.arange(1,7))
[1 2 3 4 5 6]

print (range(1,7))
range(1, 7)

#convert string column names to int
df.columns = df.columns.astype(int)
df = df.drop(np.arange(1,7), axis=1)
#another solution with range
#df = df.drop(range(1,7), axis=1)
print (df)
   7  8  9
0  5  5  7
1  3  3  4
2  6  6  3

答案 1 :(得分:0)

您可以在不修改列的情况下执行此操作,方法是将.gitignore对象传递给slice

drop

因此,它返回列端点的下限和上限的序号位置,并传递这些以创建针对列数组的In [29]: df.drop(df.columns[slice(df.columns.tolist().index('1'),df.columns.tolist().index('6')+1)], axis=1) Out[29]: 7 8 9 0 5 5 7 1 3 3 4 2 6 6 3 对象