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