丟棄某條軸上的一個(gè)或多個(gè)項(xiàng)很簡(jiǎn)單,只要有一個(gè)索引數(shù)組或列表即可。由于需要執(zhí)行一些數(shù)據(jù)整理和集合邏輯,所以drop方法返回的是一個(gè)在指定軸上刪除了指定值的新對(duì)象:
In [105]: obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
In [106]: obj
Out[106]:
a 0.0
b 1.0
c 2.0
d 3.0
e 4.0
dtype: float64
In [107]: new_obj = obj.drop('c')
In [108]: new_obj
Out[108]:
a 0.0
b 1.0
d 3.0
e 4.0
dtype: float64
In [109]: obj.drop(['d', 'c'])
Out[109]:
a 0.0
b 1.0
e 4.0
dtype: float64
對(duì)于DataFrame,可以刪除任意軸上的索引值。為了演示,先新建一個(gè)DataFrame例子:
In [110]: data = pd.DataFrame(np.arange(16).reshape((4, 4)),
.....: index=['Ohio', 'Colorado', 'Utah', 'New York'],
.....: columns=['one', 'two', 'three', 'four'])
In [111]: data
Out[111]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
用標(biāo)簽序列調(diào)用drop會(huì)從行標(biāo)簽(axis 0)刪除值:
In [112]: data.drop(['Colorado', 'Ohio'])
Out[112]:
one two three four
Utah 8 9 10 11
New York 12 13 14 15
通過(guò)傳遞axis=1或axis='columns'可以刪除列的值:
In [113]: data.drop('two', axis=1)
Out[113]:
one three four
Ohio 0 2 3
Colorado 4 6 7
Utah 8 10 11
New York 12 14 15
In [114]: data.drop(['two', 'four'], axis='columns')
Out[114]:
one three
Ohio 0 2
Colorado 4 6
Utah 8 10
New York 12 14
許多函數(shù),如drop,會(huì)修改Series或DataFrame的大小或形狀,可以就地修改對(duì)象,不會(huì)返回新的對(duì)象:
In [115]: obj.drop('c', inplace=True)
In [116]: obj
Out[116]:
a 0.0
b 1.0
d 3.0
e 4.0
dtype: float64
小心使用inplace,它會(huì)銷(xiāo)毀所有被刪除的數(shù)據(jù)。
drop函數(shù)的inplace方法太可怕了,就地修改會(huì)影響原數(shù)據(jù)啊。
drop函數(shù)還是比較簡(jiǎn)單的,沒(méi)有需要過(guò)多解釋的內(nèi)容。
文章代碼引用自:《利用Python進(jìn)行數(shù)據(jù)分析·第2版》第5章 Pandas入門(mén)
作者:SeanCheney
感謝SeanCheney同意引用。