您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Pandas.DataFrame如何重置列的行名”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Pandas.DataFrame如何重置列的行名”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
pandas.DataFrame中的現有列分配給索引index(行名,行標簽)。為索引指定唯一的名稱很方便,因為使用loc,at選擇(提取)元素時很容易理解。
將描述以下內容。
set_index()的使用方法
基本用法
將指定的列保留為數據:參數drop
分配多索引
將索引更改為另一列(重置)
更改原始對象:參數inplace
讀取csv文件等時指定索引
使用索引(行名)提取(選擇)行和元素
了解如何更改索引的一部分或將整個列表替換為列表等,而不是將現有列分配給索引。
Pandas.DataFrame的行名和列名的修改
以下面的數據為例。
import pandas as pd df = pd.read_csv('./data/22/sample_pandas_normal.csv') print(df) # 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
在第一個參數鍵中指定用作索引的列的列名(列標簽)。指定的列設置為索引。
df_i = df.set_index('name') print(df_i) # 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
默認情況下,如上例所示,從數據列中刪除指定的列。如果參數drop = False,則指定的列將設置為index,并且也將保留在data列中。
df_id = df.set_index('name', drop=False) print(df_id) # name age state point # name # Alice Alice 24 NY 64 # Bob Bob 42 CA 92 # Charlie Charlie 18 CA 70 # Dave Dave 68 TX 70 # Ellen Ellen 24 CA 88 # Frank Frank 30 NY 57
如果在第一個參數鍵中指定了列名列表(列標簽),則將多列分配為多索引。
df_mi = df.set_index(['state', 'name']) print(df_mi) # age point # state name # NY Alice 24 64 # CA Bob 42 92 # Charlie 18 70 # TX Dave 68 70 # CA Ellen 24 88 # NY Frank 30 57
使用sort_index()排序時,它可以整齊顯示。
df_mi.sort_index(inplace=True) print(df_mi) # age point # state name # CA Bob 42 92 # Charlie 18 70 # Ellen 24 88 # NY Alice 24 64 # Frank 30 57 # TX Dave 68 70
使用sort_values()對行進行排序以進行說明。有關排序的詳細信息,請參見以下文章。
pandas.DataFrame,Series排序(sort_values,sort_index)
默認情況下,如果在set_index()中指定一列,則原始索引將被刪除。
print(df_i) # 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 df_ii = df_i.set_index('state') print(df_ii) # age point # state # NY 24 64 # CA 42 92 # CA 18 70 # TX 68 70 # CA 24 88 # NY 30 57
如果將參數append設置為True,則除了原始索引之外,還將將指定的列添加為新的層次結構索引。
df_mi = df_i.set_index('state', append=True) print(df_mi) # age point # name state # Alice NY 24 64 # Bob CA 42 92 # Charlie CA 18 70 # Dave TX 68 70 # Ellen CA 24 88 # Frank NY 30 57
添加的列是最底層。使用swaplevel()切換圖層。
print(df_mi.swaplevel(0, 1)) # age point # state name # NY Alice 24 64 # CA Bob 42 92 # Charlie 18 70 # TX Dave 68 70 # CA Ellen 24 88 # NY Frank 30 57
與前面的示例一樣,如果使用set_index()指定列,則原始索引將被刪除。
如果要保留原始索引,請使用reset_index(),它會從0開始按順序對索引重新編號。
print(df_i) # 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 df_ri = df_i.reset_index() print(df_ri) # 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
如果要將索引更改(重置)到另一列,請在reset_index()之后使用set_index()。如果一次性全部編寫,將如下所示。
df_change = df_i.reset_index().set_index('state') print(df_change) # name age point # state # NY Alice 24 64 # CA Bob 42 92 # CA Charlie 18 70 # TX Dave 68 70 # CA Ellen 24 88 # NY Frank 30 57
請注意,為方便起見,在此示例中將具有重疊值的列設置為索引,但是如果索引值不重疊(每個值都是唯一的),則更容易選擇數據。
另請參見以下有關reset_index()的文章。
Pandas.DataFrame,重置Series的索引index(reset_index)
默認情況下,set_index()不會更改原始對象并返回新對象,但是如果inplace參數為True,則原始對象將被更改。
df.set_index('name', inplace=True) 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
從csv文件等中讀取并生成pandas.DataFrame或pandas.Series時,如果原始文件包含要用作索引的列,則可以在讀取時指定該列。
使用read_csv()讀取文件時,在參數index_col中指定一個列號,該列即成為索引。
df = pd.read_csv('./data/22/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
有關讀取csv和tsv文件的詳細信息,請參見以下文章。
Pandas讀取csv/tsv文件(read_csv,read_table)
與前面的示例一樣,如果在索引(行名,行標簽)中指定唯一的字符串,則可以按名稱提取(選擇)行或元素。
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 print(df.loc['Bob']) # age 42 # state CA # point 92 # Name: Bob, dtype: object print(df.at['Bob', 'age']) # 42
讀到這里,這篇“Pandas.DataFrame如何重置列的行名”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。