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

如何在Pivot前对DataFrame的F值采样并保留M值,将选中列转为新列?

问题需求

原始DataFrame:
原始DataFrame

期望结果DataFrame:
期望结果DataFrame

需求说明:原始DataFrame中性为F的feed记录行数多于M,需要在执行Pivot操作前,对F对应的行进行采样,使其行数与M的原始行数一致,同时完整保留M的所有数据。

解决代码

使用Pandas分组采样即可实现需求,代码示例如下:

import pandas as pd

# 假设原始数据存储在df中
# 统计性别为M的记录数
m_row_count = df[df['性别'] == 'M'].shape[0]

# 分组处理:保留M的全部数据,对F采样至与M相同的行数
sampled_data = df.groupby('性别', group_keys=False).apply(
    lambda group: group if group.name == 'M' else group.sample(n=m_row_count, random_state=42)
)

# 执行Pivot操作生成目标结果
result_df = sampled_data.pivot(index='user_id', columns='性别', values='feed').reset_index()

补充说明

  • random_state=42用于固定采样结果,保证可复现,不需要的话可以删除该参数
  • 如果F的原始行数少于M,会触发报错,这种场景可以根据需求添加replace=True参数允许重复采样,但实际业务中这种情况较少见

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:10:48