有没有办法在pandas DataFrame对象中选择除一列之外的所有列?我已经看到了删除列的方法,但我不想这样做。
答案 0 :(得分:94)
使用drop
方法:
df.drop(column_name, axis=1)
答案 1 :(得分:46)
df.loc[:, df.columns != col]
其中col
是要遗漏的列的名称。
答案 2 :(得分:14)
您只需选择所需的列而不删除或删除:
collist = ['col1', 'col2', 'col3']
df1 = df[collist]
只需传递所需列的列表
您还可以检索列列表,然后从该列表中选择
collist = df.columns.tolist()
# you can now select from this list any arbritrary range
df1 = df[collist[0:1]]
# or remove a column
collist.remove('col2')
# now select
df1 = df[collist]
# df1 will now only have 'col1' and 'col3'
答案 3 :(得分:2)
您可以使用numpy构建一个掩码:
import numpy as np
columns = df.columns
mask = np.ones(columns.shape, dtype=bool)
i = 4 #The specified column that you don't want to show
mask[i] = 0
df[columns[mask]]
答案 4 :(得分:1)
作为一个选项,您可以使用列表推导和df.loc方法选择除一个(或多个)之外的所有列:
select = [x for x in df.columns if x != "column_you_don't_want"]
df.loc[:, select]
如果您想遗漏多个专栏,可以试试这个:
columns_dont_want = ["col1", "col2"]
select = [x for x in df.columns if x not in columns_dont_want]
df.loc[:, select]
答案 5 :(得分:0)
df[ df.columns[df.columns!='not_this_column'] ]