網(wǎng)站首頁 編程語言 正文
使用drop()方法刪除pandas.DataFrame的行和列。
在0.21.0版之前,請使用參數(shù)labels和axis指定行和列。從0.21.0開始,可以使用index或columns。
在此,將對以下內(nèi)容進行說明。
- DataFrame指定的行刪除
- 按行名指定(行標(biāo)簽)
- 按行號指定
- 未設(shè)置行名的注意事項
- DataFrame指定的列刪除
- 按列名指定(列標(biāo)簽)
- 按列號指定
- 多行多列的刪除
刪除缺失值NaN和刪除具有重復(fù)元素的行,請參考文章。
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 ? ? 57
DataFrame指定的行刪除
按行名指定(行標(biāo)簽)
它由第一個參數(shù)labels和第二個參數(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
默認值為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或更高版本開始,它也可以由參數(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
如果要一次刪除多行,請在列表中指定。
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
默認情況下,原始DataFrame保持不變,并返回一個新的DataFrame。如果參數(shù)inplace設(shè)置為True,則將更改原始DataFrame。在這種情況下,不會返回任何新的DataFrame,并且返回值為None。
按行號指定
如果要按行號指定,請使用DataFrame的index屬性。
如果在index屬性的[]中指定行號,則可以獲得相應(yīng)的行名。可以在列表中指定多個行號。
print(df.index[[1, 3, 5]])
# Index(['Bob', 'Dave', 'Frank'], dtype='object', name='name')
在drop()第一個的參數(shù)中指定labels或index的名稱。
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è)置行名的注意事項
如果未設(shè)置行名,則index默認為整數(shù)序號。當(dāng)使用數(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)
如果是序列號,則無論原樣指定數(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
如果由于排序原因其不是序列號,結(jié)果將有所不同。當(dāng)直接指定數(shù)字值時,將刪除行標(biāo)簽為該數(shù)字值的行,而當(dāng)使用index屬性時,將刪除其行號為該數(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 ? ? 57
DataFrame指定的列刪除
按列名指定(列標(biāo)簽)
它由第一個參數(shù)labels和第二個參數(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或更高版本開始,可以使用參數(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
如果要一次刪除多個列,請在列表中指定。
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
按列號指定
如果要按列號指定,請使用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ù)值,請小心上述行。
多行多列的刪除
從0.21.0及更高版本開始,可以通過同時指定參數(shù)index和column來刪除多行/多列。
當(dāng)然,也可以通過行號/列號指定,和使用參數(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
原文鏈接:https://blog.csdn.net/qq_18351157/article/details/105785367
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-03-27 Android顯示富文本+夜間深色模式_Android
- 2022-07-09 Python小技巧練習(xí)分享_python
- 2022-10-31 ViewPager實現(xiàn)圖片切換效果_Android
- 2022-12-23 Kotlin標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法基礎(chǔ)知識詳解_Android
- 2022-09-21 Django?url.py?path?name同一app下路由別名定義_python
- 2022-11-10 利用Python的pandas數(shù)據(jù)處理包將寬表變成窄表_python
- 2022-04-25 關(guān)于vscode?默認添加python項目的源目錄路徑到執(zhí)行環(huán)境的問題_python
- 2022-10-16 python正則表達式re.group()用法_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支