如何在Pandas DataFrame中为每个Name索引层级保留前三行
处理多级索引DataFrame:保留每个主索引下的前三行
要实现每个Name层级索引下仅保留前三行,直接用Pandas的groupby结合head()方法就能搞定,操作简单高效:
核心代码逻辑
按第一级索引(Name)分组,对每组取前3行:
df_truncated = df.groupby(level=0).head(3)
完整示例
import pandas as pd # 创建包含多个Name的示例DataFrame df = pd.DataFrame() df["Name"] = ["Name1", "Name1", "Name1", "Name1", "Name2", "Name2", "Name2", "Name2", "Name2"] df["SubName"] = ["Sub1", "Sub2", "Sub3", "Sub4", "SubA", "SubB", "SubC", "SubD", "SubE"] df["Value"] = [1,2,3,4,5,6,7,8,9] df.set_index(["Name", "SubName"], inplace=True) # 执行截断处理 df_truncated = df.groupby(level=0).head(3) print("处理后的DataFrame:") print(df_truncated)
说明
groupby(level=0)指定按第一级索引(即Name)分组head(3)保留每组的前3行,完全遵循原数据的行顺序- 无论单个
Name下有多少行,都会自动截断到仅留前三行,完美适配多Name的场景
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

