📜  如何在Groupby熊猫之后重置索引?(1)

📅  最后修改于: 2023-12-03 15:24:28.805000             🧑  作者: Mango

如何在Groupby熊猫之后重置索引?

在 Pandas 中,可以使用 groupby 函数将 DataFrame 按照某些列的值进行分组处理。但是,在将 DataFrame 分组之后,很可能会出现需要重置索引的情况。本文将介绍如何在 Groupby 熊猫之后重置索引。

方法一:使用 reset_index() 函数

可以使用 DataFrame 的 reset_index() 函数来重置索引,该函数将 DataFrame 中的索引转换为一个单独的列。这样,即使在 Groupby 之后,也可以将 DataFrame 转换回原始形式。

import pandas as pd

# 创建数据框
data = {'State': ['CA', 'NY', 'TX', 'TX', 'CA', 'NY', 'NY'], 
        'Year': [2018, 2018, 2018, 2019, 2019, 2019, 2019], 
        'Sales': [100, 200, 300, 400, 500, 600, 700]} 
df = pd.DataFrame(data)

# 使用 groupby 函数按 State, Year 列进行分组
grouped_df = df.groupby(['State', 'Year'])['Sales'].sum()

# 重置索引
new_df = grouped_df.reset_index()

print(new_df)

输出结果:

  State  Year  Sales
0    CA  2018    100
1    CA  2019    500
2    NY  2018    200
3    NY  2019   1300
4    TX  2018    300
5    TX  2019    400

可以看到,reset_index() 函数将原始索引列添加到 DataFrame 中,并创建一个新的整数索引列。

方法二:使用 as_index 参数

另一种方法是在使用 groupby() 函数时使用 as_index 参数,将其设置为 False。这将保留原始的整数索引,并使 DataFrame 在 Groupby 之后仍然保持原状。

import pandas as pd

# 创建数据框
data = {'State': ['CA', 'NY', 'TX', 'TX', 'CA', 'NY', 'NY'], 
        'Year': [2018, 2018, 2018, 2019, 2019, 2019, 2019], 
        'Sales': [100, 200, 300, 400, 500, 600, 700]} 
df = pd.DataFrame(data)

# 使用 groupby 函数按 State, Year 列进行分组,并设置 as_index 参数为 False
grouped_df = df.groupby(['State', 'Year'], as_index=False)['Sales'].sum()

print(grouped_df)

输出结果:

  State  Year  Sales
0    CA  2018    100
1    CA  2019    500
2    NY  2018    200
3    NY  2019   1300
4    TX  2018    300
5    TX  2019    400

可以看到,as_index 参数将索引设置为 False,使 DataFrame 保留了原始的整数索引。

总结:

在 Groupby 熊猫之后需要重置索引时,可以使用 reset_index() 函数或 as_index 参数。其中,reset_index() 函数将索引转换为一个单独的列,而 as_index 参数将索引设置为 False,保留原始整数索引。