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

在Pandas中根据两列最大值来源生成标记列(MEN=1、WOMEN=0)

生成Pandas DataFrame的sex列解决方案

给定如下Pandas DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'WOMEN':[0,1,3,1,2,0,0],
                   'MEN':[2,3,1,2,0,0,1]})

需求规则:

  • 新增sex列:
    • 若MEN列值为该行最大值,标记为1
    • 若WOMEN列值为该行最大值,标记为0
    • 若两列值相等,随机标记0或1

实现步骤

  1. 初始化sex列:先填充明确匹配规则的标记,相等行暂设为NaN
df['sex'] = np.where(df['MEN'] > df['WOMEN'], 1, 
                     np.where(df['WOMEN'] > df['MEN'], 0, np.nan))
  1. 处理相等行的随机标记:筛选出未赋值的行,生成随机0/1填充
# 获取两列值相等的行索引
equal_rows_idx = df[df['sex'].isna()].index
# 生成对应长度的随机0/1数组
random_labels = np.random.randint(0, 2, size=len(equal_rows_idx))
# 填充到对应位置
df.loc[equal_rows_idx, 'sex'] = random_labels
  1. 添加id列(匹配预期结果格式)
df['id'] = range(1, len(df)+1)
# 调整列顺序与示例一致
df = df[['id', 'WOMEN', 'MEN', 'sex']]

示例输出

执行后得到的DataFrame类似(相等行的随机值可能不同):

idWOMENMENsex
1021
2131
3310
4121
5200
6000
7011

内容的提问来源于stack exchange,提问作者Ramiro Guzmán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:02