在 Pandas DataFrame 中按索引刪除列

Manav Narula 2020年12月31日
在 Pandas DataFrame 中按索引刪除列

DataFrame 可以非常大,可以包含數百行和數百列。熟練掌握 DataFrame 的基本維護操作是很有必要的,比如刪除其中的多列。我們可以使用 dataframe.drop() 方法,根據指定的 axis 從 DataFrame 中刪除列或行,0 代表行,1 代表列。它根據一些標籤來確定要刪除的元素。例如,我們將從下面的 DataFrame 中刪除列'a'

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

print(df)

df.drop(['a'], axis = 1, inplace = True)

print(df)

輸出:

    a  b   c   d
0  10  6   7   8
1   1  9  12  14
2   5  8  10   6
   b   c   d
0  6   7   8
1  9  12  14
2  8  10   6

請注意 drop 函式中 inplace 引數的使用。當 inplace 引數設定為 True 時,列將從原始 DataFrame 中刪除;否則,將返回原始 DataFrame 的副本。

在我們的例子中,我們已經刪除了列'a',但我們需要將其標籤名傳遞給 dataframe.drop() 函式。在處理大型資料集時,我們應該同時處理許多列的此類任務,並且使用列索引代替它們的名稱。

我們可以通過使用 dataframe.columns() 方法來實現,該方法返回 DataFrame 的所有列,並使用它們的索引將所需的列標籤傳遞給 dataframe.drop() 函式。下面的程式碼片段解釋了我們如何做到這一點。

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

df.drop(df.columns[[1,2]],
        axis = 1,
        inplace = True)

print(df)

輸出:

    a   d
0  10   8
1   1  14
2   5   6

它將刪除索引為 12 的列。

我們也可以避免使用 axis 引數,只需在 dataframe.drop() 函式中提到 columns 引數,它就會自動指示要刪除的列。例子

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]], columns = ['a','b','c','d'])

df.drop(columns = df.columns[[1,2]],
        inplace = True)

print(df)

輸出:

    a   d
0  10   8
1   1  14
2   5   6
Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Pandas DataFrame