Pandas DataFrame DataFrame.reindex() 函式

Minahil Noor 2023年1月30日
  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