2015-08-16 27 views
7

是否可以從熊貓數據框中選擇否定給定列表?例如,假設我有以下數據框從熊貓數據框中選擇除列表的列表以外的所有內容

T1_V2 T1_V3 T1_V4 T1_V5 T1_V6 T1_V7 T1_V8 
1  15  3  2  N  B  N   
4  16  14  5  H  B  N    
1  10  10  5  N  K  N 

並且我想要列出除列T1_V6以外的所有列。我通常會做的是這樣的:

df = df[["T1_V2","T1_V3","T1_V4","T1_V5","T1_V7","T1_V8"]] 

我的問題是是否有一種方法來此的其他方式,像這樣

df = df[!["T1_V6"]] 
+0

你可以使用一個列表理解'DF [列[列df.columns如果列!=「T1_V6」]' –

回答

9

如果你的列名是字符串,你可以做它是這樣的:

df[df.columns - ["T1_V6"]] 

然而,「SET減」不適用於數字列名工作,所以這是對p robably做到這一點的首選方式(工作也與數字列名):

df[df.columns.difference(["T1_V6"])] 
+1

我接受了答案,因爲它是最緊湊的,可以完成工作。但是,我收到了這個警告'/usr/local/lib/python2.7/dist-packages/pandas/core/index.py:1353:FutureWarning:使用' - '提供與索引的集合差異已被棄用,請使用。差異() 「use .difference()」,FutureWarning)' – MedAli

+0

嗯..奇怪我沒有得到警告。我將差異方法添加到答案中。這幾乎是一樣簡單。 – Pekka

+1

設置減號實際上不適用於數字列名,因此對於它們您必須使用差值。 – Pekka

2

爲了完整起見,你也可以很容易地使用drop此:

df.drop(["T1_V6"], axis=1) 
2

我會建議使用DataFrame.drop()

columns_to _exclude = ['T1_V6'] 
old_dataframe = #Has all columns 
new_dataframe = old_data_frame.drop(columns_to_exclude, axis = 1) 

您可以使用就地進行更改原始數據幀本身

old_dataframe.drop(columns_to_exclude, axis = 1, inplace = True) 
#old_dataframe is changed 
相關問題