Pandas DataFrame DataFrame.reindex() 函式

Minahil Noor 2023年1月30日 2020年6月17日
  1. pandas.DataFrame.reindex() 語法
  2. 示例程式碼:DataFrame.reindex()
  3. 示例程式碼:DataFrame.reindex() 來重新索引列
  4. 示例程式碼:DataFrame.reindex()fill_value 填充缺失值的方法
  5. 示例程式碼:DataFrame.reindex() 使用 method 引數來填充缺失的值
Pandas DataFrame DataFrame.reindex() 函式

Python Pandas DataFrame.reindex() 函式改變一個 DataFrame 的索引。它改變了指定軸上的索引。新的索引不包含值。它提供了可選的引數來填充這些值。

pandas.DataFrame.reindex() 語法

DataFrame.dropna(labels, 
                 index,
                 columns,
                 axis, 
                 method,
                 copy,
                 level,
                 fill_value,
                 limit,
                 tolerance) 

引數

labels 它是一個類似於陣列的結構,包含新索引的名稱
index, columns 它是一個類似於陣列的結構,包含新索引的名稱。應使用關鍵字 indexcolumns 來指定
axis 它是一個整數或字串。它告訴目標軸的行或列。它可以是 0index1columns
method 這個引數指定了在重新索引的 DataFrame 中填充缺失值的方法。
它有四種可能的方法:Nonebackfill/bfillpad/ffillpad/ffillNone, backfill/bfill, pad/ffill, nearest.
它只適用於我們的 DataFrameSeries 有一個索引遞增或遞減的序列
copy 布林值。預設情況下,它是 True。它返回一個新物件
level 它是一個整數或名稱。它匹配傳遞的多索引級別的索引值
fill_value 它有一個標量值。它是填補缺失值的值
limit 它是一個整數。它表示連續元素的極限,同時填充缺失值
tolerance 在不完全匹配的情況下,它可以顯示原始標籤和新標籤之間的差異

返回值

它返回一個帶有改變過的索引的 DataFrame

示例程式碼:DataFrame.reindex()

預設情況下,軸是 0 即行,所以行將被重新索引。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})
print(dataframe)

例子 DataFrame 如下。

   Attendance    Name  Obtained Marks
0          60  Olivia              56
1         100    John              75
2          80   Laura              82
3          75     Ben              64
4          95   Kevin              67

Python 中的索引從 0 開始,我們將重新索引我們的 DataFrame,新的索引將從 1 開始。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})

dataframe1 = dataframe.reindex([1,2,3,4,5])
print(dataframe1)

輸出:

   Attendance   Name  Obtained Marks
1       100.0   John            75.0
2        80.0  Laura            82.0
3        75.0    Ben            64.0
4        95.0  Kevin            67.0
5         NaN    NaN             NaN

這裡,5 是一個新的索引。所以,新索引的值是 NaN

示例程式碼:DataFrame.reindex() 來重新索引列

有兩種方法可以重新索引列。一種是用列關鍵字指定標籤,另一種是使用軸引數。比較好的一種是用列關鍵字指定標籤。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})

dataframe1 = dataframe.reindex(columns=['Presents','Name', 'Marks'])

print(dataframe1)

輸出:

   Presents    Name  Marks
0       NaN  Olivia    NaN
1       NaN    John    NaN
2       NaN   Laura    NaN
3       NaN     Ben    NaN
4       NaN   Kevin    NaN

舊的索引用舊的值分配。新索引的值為 NaN

我們也可以用 axis 引數重新索引列。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})

dataframe1 = dataframe.reindex(['Presents','Name', 'Marks'],
                              axis='columns')

print(dataframe1)

示例程式碼:DataFrame.reindex()fill_value 填充缺失值的方法

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})
dataframe1 = dataframe.reindex([1,2,3,4,5], fill_value=0)
print(dataframe1)

輸出:

   Attendance   Name  Obtained Marks
1         100   John              75
2          80  Laura              82
3          75    Ben              64
4          95  Kevin              67
5           0      0               0

缺失的值現在用 0 填充。

示例程式碼:DataFrame.reindex() 使用 method 引數來填充缺失的值

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})
dataframe1 = dataframe.reindex([1,2,3,4,5], method='ffill')
print(dataframe1)

輸出:

 Attendance   Name  Obtained Marks
1         100   John              75
2          80  Laura              82
3          75    Ben              64
4          95  Kevin              67
5          95  Kevin              67

方法 ffill 用最後一個可用值填補了前向缺失值。

相關文章 - Pandas DataFrame