簡體   English   中英

如何刪除DataFrame中除某些列外的所有列?

[英]How to delete all columns in DataFrame except certain ones?

假設我有一個如下所示的 DataFrame:

a  b  c  d  e  f  g  
1  2  3  4  5  6  7
4  3  7  1  6  9  4
8  9  0  2  4  2  1

我 go 如何刪除ab以外的每一列?

這將導致:

a  b
1  2
4  3
8  9

我想要一種使用簡單的代碼行刪除這些列的方法,即刪除ab之外的所有列,因為假設我有 1000 列數據。

謝謝你。

In [48]: df.drop(df.columns.difference(['a','b']), 1, inplace=True)
Out[48]:
   a  b
0  1  2
1  4  3
2  8  9

或:

In [55]: df = df.loc[:, df.columns.intersection(['a','b'])]

In [56]: df
Out[56]:
   a  b
0  1  2
1  4  3
2  8  9

PS 請注意, @Wen 已經提出了最慣用的 Pandas 方法

df = df[['a','b']]

df = df.loc[:, ['a','b']]

添加到組合中的另一種選擇。 我更喜歡這種方法的可讀性。

df = df.filter(['a', 'b'])

其中第一個位置參數是items=[]


獎金

您還可以使用like參數或regex進行過濾。
如果您有一組像['a_1','a_2','b_1','b_2']

你可以做

df = df.filter(like='b_')

並以['b_1','b_2']結尾

過濾器的 Pandas 文檔。

有多種解決方案。

df = df[['a','b']] #1

df = df[list('ab')] #2

df = df.loc[:,df.columns.isin(['a','b'])] #3

df = pd.DataFrame(data=df.eval('a,b').T,columns=['a','b']) #4 PS:I do not recommend this method , but still a way to achieve this 

如果您要刪除多於兩列,比如說2030 ,您也可以使用列表。 確保您還指定了軸值。

drop_list = ["a","b"]
df = df.drop(df.columns.difference(drop_list), axis=1)

嘿,你要找的是:

df = df[["a","b"]]

您將收到一個 dataframe,其中僅包含 a 和 b 列

如果您只想保留多於您刪除的列,請在 .isin 語句前添加“~”以選擇除您想要的列之外的每一列:

df = df.loc[:, ~df.columns.isin(['a','b'])]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM