Pandas DataFrame Reindex 方法

Beginner

介绍

在本教程中,我们将学习 Python pandas 的 DataFrame.reindex() 方法。我们将探讨如何使用此方法更改 DataFrame 的索引和列。DataFrame.reindex() 方法允许我们通过填充先前索引中没有值的位置的空值,将 DataFrame 与新的索引进行对齐。

虚拟机提示

虚拟机启动完成后,点击左上角切换到 Notebook 选项卡以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,直到 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。在实验结束后提供反馈,我们将及时为你解决问题。

导入 pandas 库并创建 DataFrame

让我们从导入 pandas 库并创建一个 DataFrame 开始。我们将使用这个 DataFrame 来演示 DataFrame.reindex() 方法。

import pandas as pd

## 创建一个 DataFrame
df = pd.DataFrame([[1, 6, 2], [3, 4, 6], [12, 1, 0]], columns=['A', 'B', 'C'], index=['index_1', 'index_2', 'index_3'])

使用 index 参数重新索引 DataFrame

要通过更改索引来重新索引 DataFrame,请将新的索引标签列表传递给 DataFrame.reindex() 方法。原始 DataFrame 中不存在的索引标签将被填充为 NaN 值。

## 使用新的索引重新索引 DataFrame
new_index = ['index_1', 'index_2', 'index_4']
reindexed_df = df.reindex(index=new_index)

print(reindexed_df)

输出:

         A    B    C
index_1  1.0  6.0  2.0
index_2  3.0  4.0  6.0
index_4  NaN  NaN  NaN

使用 columns 参数重新索引 DataFrame

类似地,你可以通过更改列来重新索引 DataFrame,使用 DataFrame.reindex() 方法。将新的列标签列表传递给 columns 参数。原始 DataFrame 中不存在的列将被填充为 NaN 值。

## 使用新的列重新索引 DataFrame
new_columns = ['A', 'C', 'D']
reindexed_df = df.reindex(columns=new_columns)

print(reindexed_df)

输出:

         A    C    D
index_1  1.0  2.0  NaN
index_2  3.0  6.0  NaN
index_3  12.0  0.0  NaN

使用 fill_value 参数填充空值

如果你想用特定值填充空值,可以使用 DataFrame.reindex() 方法的 fill_value 参数。提供你希望用于填充空值的值。

## 重新索引 DataFrame 并用 2 填充空值
new_index = ['index_1', 'index_2', 'index_4']
reindexed_df = df.reindex(index=new_index, fill_value=2)

print(reindexed_df)

输出:

         A  B  C
index_1  1  6  2
index_2  3  4  6
index_4  2  2  2

总结

在本教程中,我们学习了如何使用 pandas 中的 DataFrame.reindex() 方法重新索引 DataFrame。我们探讨了如何更改 DataFrame 的索引和列、填充空值,以及为这些空值指定填充值。掌握如何正确重新索引 DataFrame 对于在 pandas 中操作和对齐数据非常有用。