Pandas DataFrame Reindex 方法

PandasPandasBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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

虚拟机提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL pandas(("Pandas")) -.-> pandas/DataSelectionGroup(["Data Selection"]) pandas(("Pandas")) -.-> pandas/DataCleaningGroup(["Data Cleaning"]) pandas(("Pandas")) -.-> pandas/AdvancedOperationsGroup(["Advanced Operations"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) pandas/DataSelectionGroup -.-> pandas/select_columns("Select Columns") pandas/DataSelectionGroup -.-> pandas/select_rows("Select Rows") python/DataStructuresGroup -.-> python/lists("Lists") pandas/DataCleaningGroup -.-> pandas/handle_missing_values("Handling Missing Values") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") pandas/AdvancedOperationsGroup -.-> pandas/reshape_data("Reshaping Data") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") python/DataScienceandMachineLearningGroup -.-> python/data_analysis("Data Analysis") subgraph Lab Skills pandas/select_columns -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} pandas/select_rows -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} python/lists -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} pandas/handle_missing_values -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} python/importing_modules -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} pandas/reshape_data -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} python/data_collections -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} python/data_serialization -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} python/data_analysis -.-> lab-68713{{"Pandas DataFrame Reindex 方法"}} end

导入 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 中操作和对齐数据非常有用。