You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Pandas DataFrame某列唯一值生成特定形状DataFrame并拆分为子DataFrame

解决Pandas按唯一值生成DataFrame并拆分的问题

我来帮你搞定这个问题!你遇到的核心卡点是groupby返回的是分组对象,没法直接用iloc切片,所以得先把它转换成普通的DataFrame,再进行拆分操作。下面是具体的实现步骤:

一、生成形状为(1714, 36)的目标DataFrame

这里给你两种实用的方法,按需选择:

方法1:用drop_duplicates快速生成(推荐)

如果你的需求只是保留每个A列唯一值对应的一行数据(比如默认保留每组第一次出现的行),这个方法最简单直接:

# 保留每个A唯一值对应的第一行,生成目标DataFrame
unique_df = df.drop_duplicates(subset='A', keep='first')
# 重置索引(可选,让索引从0开始,后续切片更直观)
unique_df = unique_df.reset_index(drop=True)

这样得到的unique_df就是标准的Pandas DataFrame,形状正好是(1714, 36),完全支持iloc操作。

方法2:用groupby结合聚合转换

如果需要对每个分组做自定义聚合(比如取均值、求和,或者保留特定行),可以用groupby先聚合再转成DataFrame:

# 示例:取每个分组的第一行,效果和drop_duplicates一致
unique_df = df.groupby('A').first().reset_index()

# 如果你有自定义聚合需求,比如对不同列做不同操作:
# unique_df = df.groupby('A').agg(
#     {'B': 'mean',   # B列取均值
#      'C': 'sum',    # C列求和
#      'D': 'last'}   # D列取最后一行的值
# ).reset_index()

这里groupby().first()会返回一个DataFrame,再通过reset_index()把A列从索引变回普通列,确保最终结果的列数和原DataFrame一致。

二、拆分为4个子DataFrame

现在unique_df是普通的DataFrame了,直接用iloc按照你想要的逻辑拆分即可:

# 按500行的间隔拆分,注意iloc是左闭右开的索引规则
df1 = unique_df.iloc[:500, :]
df2 = unique_df.iloc[500:1000, :]
df3 = unique_df.iloc[1000:1500, :]
df4 = unique_df.iloc[1500:, :]  # 最后一个子DataFrame的形状是(214, 36),因为1714-1500=214

内容的提问来源于stack exchange,提问作者Igor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:27:42