📅  最后修改于: 2023-12-03 15:24:28.805000             🧑  作者: Mango
在 Pandas 中,可以使用 groupby 函数将 DataFrame 按照某些列的值进行分组处理。但是,在将 DataFrame 分组之后,很可能会出现需要重置索引的情况。本文将介绍如何在 Groupby 熊猫之后重置索引。
可以使用 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 中,并创建一个新的整数索引列。
另一种方法是在使用 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,保留原始整数索引。