您好,登錄后才能下訂單哦!
本篇內容主要講解“Pandas.DataFrame怎么刪除指定行和列”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Pandas.DataFrame怎么刪除指定行和列”吧!
Pandas刪除,替換并提取其中的缺失值NaN(dropna,fillna,isnull)
以下數據用作示例代碼中的示例。
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
它由第一個參數labels和第二個參數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或更高版本開始,它也可以由參數索引指定。
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。如果參數inplace設置為True,則將更改原始DataFrame。在這種情況下,不會返回任何新的DataFrame,并且返回值為None。
如果要按行號指定,請使用DataFrame的index屬性。
如果在index屬性的[]中指定行號,則可以獲得相應的行名。可以在列表中指定多個行號。
print(df.index[[1, 3, 5]]) # Index(['Bob', 'Dave', 'Frank'], dtype='object', name='name')
在drop()第一個的參數中指定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
如果未設置行名,則index默認為整數序號。當使用數字值而不是這樣的字符串作為索引時要小心。
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)
如果是序列號,則無論原樣指定數字值還是使用index屬性,結果都將相同。
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
如果由于排序原因其不是序列號,結果將有所不同。當直接指定數字值時,將刪除行標簽為該數字值的行,而當使用index屬性時,將刪除其行號為該數字值的行。
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
它由第一個參數labels和第二個參數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或更高版本開始,可以使用參數列指定它。
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
參數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是整數值,請小心上述行。
從0.21.0及更高版本開始,可以通過同時指定參數index和column來刪除多行/多列。
當然,也可以通過行號/列號指定,和使用參數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
到此,相信大家對“Pandas.DataFrame怎么刪除指定行和列”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。