![](/img/trans.png)
[英]How to scale all columns except certain ones in pandas 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 如何刪除a
和b
以外的每一列?
這將導致:
a b
1 2
4 3
8 9
我想要一種使用簡單的代碼行刪除這些列的方法,即刪除a
和b
之外的所有列,因為假設我有 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']
結尾
有多種解決方案。
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
如果您要刪除多於兩列,比如說20
或30
,您也可以使用列表。 確保您還指定了軸值。
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.