Pandas.DataFrame刪除指定行和列(drop)的實(shí)現(xiàn)
使用drop()方法刪除pandas.DataFrame的行和列。
在0.21.0版之前,請(qǐng)使用參數(shù)labels和axis指定行和列。從0.21.0開(kāi)始,可以使用index或columns。
在此,將對(duì)以下內(nèi)容進(jìn)行說(shuō)明。
- DataFrame指定的行刪除
- 按行名指定(行標(biāo)簽)
- 按行號(hào)指定
- 未設(shè)置行名的注意事項(xiàng)
- DataFrame指定的列刪除
- 按列名指定(列標(biāo)簽)
- 按列號(hào)指定
- 多行多列的刪除
刪除缺失值NaN和刪除具有重復(fù)元素的行,請(qǐng)參考文章。
Pandas刪除,替換并提取其中的缺失值NaN(dropna,fillna,isnull)
以下數(shù)據(jù)用作示例代碼中的示例。
import pandas as pd
df = pd.read_csv('./data/12/sample_pandas_normal.csv', index_col=0)
print(df)
# ? ? ? ? ?age state ?point
# name
# Alice ? ? 24 ? ?NY ? ? 64
# Bob ? ? ? 42 ? ?CA ? ? 92
# Charlie ? 18 ? ?CA ? ? 70
# Dave ? ? ?68 ? ?TX ? ? 70
# Ellen ? ? 24 ? ?CA ? ? 88
# Frank ? ? 30 ? ?NY ? ? 57DataFrame指定的行刪除
按行名指定(行標(biāo)簽)
它由第一個(gè)參數(shù)labels和第二個(gè)參數(shù)axis指定。行指定axis= 0。
print(df.drop('Charlie', axis=0))
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
默認(rèn)值為axis = 0,因此可以省略axis。
print(df.drop('Charlie'))
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
從0.21.0或更高版本開(kāi)始,它也可以由參數(shù)索引指定。
print(df.drop(index='Charlie')) # age state point # name # Alice 24 NY 64 # Bob 42 CA 92 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57
如果要一次刪除多行,請(qǐng)?jiān)诹斜碇兄付ā?/p>
print(df.drop(['Bob', 'Dave', 'Frank'])) # ? ? ? ? ?age state ?point # name ? ? ? ? ? ? ? ? ? ?? # Alice ? ? 24 ? ?NY ? ? 64 # Charlie ? 18 ? ?CA ? ? 70 # Ellen ? ? 24 ? ?CA ? ? 88 print(df.drop(index=['Bob', 'Dave', 'Frank'])) # ? ? ? ? ?age state ?point # name ? ? ? ? ? ? ? ? ? ?? # Alice ? ? 24 ? ?NY ? ? 64 # Charlie ? 18 ? ?CA ? ? 70 # Ellen ? ? 24 ? ?CA ? ? 88
默認(rèn)情況下,原始DataFrame保持不變,并返回一個(gè)新的DataFrame。如果參數(shù)inplace設(shè)置為T(mén)rue,則將更改原始DataFrame。在這種情況下,不會(huì)返回任何新的DataFrame,并且返回值為None。
按行號(hào)指定
如果要按行號(hào)指定,請(qǐng)使用DataFrame的index屬性。
如果在index屬性的[]中指定行號(hào),則可以獲得相應(yīng)的行名??梢栽诹斜碇兄付ǘ鄠€(gè)行號(hào)。
print(df.index[[1, 3, 5]]) # Index(['Bob', 'Dave', 'Frank'], dtype='object', name='name')
在drop()第一個(gè)的參數(shù)中指定labels或index的名稱(chēng)。
print(df.drop(df.index[[1, 3, 5]])) # ? ? ? ? ?age state ?point # name ? ? ? ? ? ? ? ? ? ?? # Alice ? ? 24 ? ?NY ? ? 64 # Charlie ? 18 ? ?CA ? ? 70 # Ellen ? ? 24 ? ?CA ? ? 88 print(df.drop(index=df.index[[1, 3, 5]])) # ? ? ? ? ?age state ?point # name ? ? ? ? ? ? ? ? ? ?? # Alice ? ? 24 ? ?NY ? ? 64 # Charlie ? 18 ? ?CA ? ? 70 # Ellen ? ? 24 ? ?CA ? ? 88
未設(shè)置行名的注意事項(xiàng)
如果未設(shè)置行名,則index默認(rèn)為整數(shù)序號(hào)。當(dāng)使用數(shù)字值而不是這樣的字符串作為索引時(shí)要小心。
df_noindex = pd.read_csv('./data/12/sample_pandas_normal.csv')
print(df_noindex)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
print(df_noindex.index)
# RangeIndex(start=0, stop=6, step=1)如果是序列號(hào),則無(wú)論原樣指定數(shù)字值還是使用index屬性,結(jié)果都將相同。
print(df_noindex.drop([1, 3, 5])) # ? ? ? name ?age state ?point # 0 ? ?Alice ? 24 ? ?NY ? ? 64 # 2 ?Charlie ? 18 ? ?CA ? ? 70 # 4 ? ?Ellen ? 24 ? ?CA ? ? 88 print(df_noindex.drop(df_noindex.index[[1, 3, 5]])) # ? ? ? name ?age state ?point # 0 ? ?Alice ? 24 ? ?NY ? ? 64 # 2 ?Charlie ? 18 ? ?CA ? ? 70 # 4 ? ?Ellen ? 24 ? ?CA ? ? 88
如果由于排序原因其不是序列號(hào),結(jié)果將有所不同。當(dāng)直接指定數(shù)字值時(shí),將刪除行標(biāo)簽為該數(shù)字值的行,而當(dāng)使用index屬性時(shí),將刪除其行號(hào)為該數(shù)字值的行。
df_noindex_sort = df_noindex.sort_values('state')
print(df_noindex_sort)
# ? ? ? name ?age state ?point
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
print(df_noindex_sort.index)
# Int64Index([1, 2, 4, 0, 5, 3], dtype='int64')
print(df_noindex_sort.drop([1, 3, 5]))
# ? ? ? name ?age state ?point
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
print(df_noindex_sort.drop(df_noindex_sort.index[[1, 3, 5]]))
# ? ? name ?age state ?point
# 1 ? ?Bob ? 42 ? ?CA ? ? 92
# 4 ?Ellen ? 24 ? ?CA ? ? 88
# 5 ?Frank ? 30 ? ?NY ? ? 57DataFrame指定的列刪除
按列名指定(列標(biāo)簽)
它由第一個(gè)參數(shù)labels和第二個(gè)參數(shù)axis指定。列指定axis= 1。
print(df.drop('state', axis=1))
# age point
# name
# Alice 24 64
# Bob 42 92
# Charlie 18 70
# Dave 68 70
# Ellen 24 88
# Frank 30 57
從0.21.0或更高版本開(kāi)始,可以使用參數(shù)列指定它。
print(df.drop(columns='state')) # age point # name # Alice 24 64 # Bob 42 92 # Charlie 18 70 # Dave 68 70 # Ellen 24 88 # Frank 30 57
如果要一次刪除多個(gè)列,請(qǐng)?jiān)诹斜碇兄付ā?/p>
print(df.drop(['state', 'point'], axis=1)) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Bob ? ? ? 42 # Charlie ? 18 # Dave ? ? ?68 # Ellen ? ? 24 # Frank ? ? 30 print(df.drop(columns=['state', 'point'])) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Bob ? ? ? 42 # Charlie ? 18 # Dave ? ? ?68 # Ellen ? ? 24 # Frank ? ? 30
參數(shù)inplace的使用方法與行的相同。
df_org = df.copy() df_org.drop(columns=['state', 'point'], inplace=True) print(df_org) # age # name # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30
按列號(hào)指定
如果要按列號(hào)指定,請(qǐng)使用DataFrame的columns屬性。
print(df.columns[[1, 2]]) # Index(['state', 'point'], dtype='object') print(df.drop(df.columns[[1, 2]], axis=1)) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Bob ? ? ? 42 # Charlie ? 18 # Dave ? ? ?68 # Ellen ? ? 24 # Frank ? ? 30 print(df.drop(columns=df.columns[[1, 2]])) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Bob ? ? ? 42 # Charlie ? 18 # Dave ? ? ?68 # Ellen ? ? 24 # Frank ? ? 30
如果columns是整數(shù)值,請(qǐng)小心上述行。
多行多列的刪除
從0.21.0及更高版本開(kāi)始,可以通過(guò)同時(shí)指定參數(shù)index和column來(lái)刪除多行/多列。
當(dāng)然,也可以通過(guò)行號(hào)/列號(hào)指定,和使用參數(shù)inplace。
print(df.drop(index=['Bob', 'Dave', 'Frank'], ? ? ? ? ? ? ? columns=['state', 'point'])) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Charlie ? 18 # Ellen ? ? 24 print(df.drop(index=df.index[[1, 3, 5]], ? ? ? ? ? ? ? columns=df.columns[[1, 2]])) # ? ? ? ? ?age # name ? ? ? ? # Alice ? ? 24 # Charlie ? 18 # Ellen ? ? 24
到此這篇關(guān)于Pandas.DataFrame刪除指定行和列(drop)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas DataFrame刪除指定行列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
面向新手解析python Beautiful Soup基本用法
這篇文章主要介紹了面向新手解析python Beautiful Soup基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
如何基于Python實(shí)現(xiàn)word文檔重新排版
這篇文章主要介紹了如何基于Python實(shí)現(xiàn)word文檔重新排版,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
微信小程序python用戶(hù)認(rèn)證的實(shí)現(xiàn)
這篇文章主要介紹了微信小程序python用戶(hù)認(rèn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
利用Selenium添加cookie實(shí)現(xiàn)自動(dòng)登錄的示例代碼(fofa)
這篇文章主要介紹了利用Selenium添加cookie實(shí)現(xiàn)自動(dòng)登錄的示例代碼(fofa),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
pytorch中tensor轉(zhuǎn)換為float的實(shí)現(xiàn)示例
本文主要介紹了pytorch中tensor轉(zhuǎn)換為float,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
Python的加密模塊之hashlib 與 base64詳解及常用加密方法
我們來(lái)學(xué)習(xí)一下 Python 中的加密模塊,加密模塊在工作中被廣泛應(yīng)用,比如數(shù)據(jù)的傳入 不希望被捕獲,通過(guò)把數(shù)據(jù)加密。這樣即使被捕獲也無(wú)法獲取到數(shù)據(jù)的真實(shí)信息,今天我們就來(lái)學(xué)習(xí)一下關(guān)于加密的方法,感興趣的朋友跟隨小編一起看看吧2023-02-02
Jupyter打開(kāi)圖形界面并畫(huà)出正弦函數(shù)圖像實(shí)例
這篇文章主要介紹了Jupyter打開(kāi)圖形界面并畫(huà)出正弦函數(shù)圖像實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
對(duì)Python 內(nèi)建函數(shù)和保留字詳解
今天小編就為大家分享一篇對(duì)Python 內(nèi)建函數(shù)和保留字詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python獲取系統(tǒng)默認(rèn)字符編碼的方法
這篇文章主要介紹了Python獲取系統(tǒng)默認(rèn)字符編碼的方法,涉及Python中sys模塊getdefaultencoding方法的使用技巧,需要的朋友可以參考下2015-06-06

