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

Pandas DataFrame按S分组判断各X列最大值是否大于O=1对应值

实现代码

import pandas as pd

# 构造示例DataFrame,你可以替换为自己读取数据的逻辑
data = {
    'S': [100,100,100,100,150,150,150,150,200,200,200,200,250,250,250,250],
    'O': [1,3,7,9,1,3,7,9,1,3,7,9,1,3,7,9],
    'X1': [0.107455,0.375586,0.167457,0.835885,0.997843,0.904277,0.907843,0.33937,0.054206,0.233063,0.87344,0.922502,0.016137,0.402824,0.220363,0.37158],
    'X2': [0.446583,0.314810,0.555283,0.213843,0.837116,0.276030,0.387135,0.990797,0.105728,0.972236,0.395052,0.471666,0.478540,0.466885,0.134676,0.429023],
    'X3': [0.220452,0.417982,0.335208,0.376132,0.509243,0.309795,0.506080,0.803394,0.220876,0.323389,0.508753,0.372094,0.118725,0.953571,0.384890,0.893135],
    'X4': [0.105891,0.974419,0.152041,0.605004,0.993932,0.623847,0.685169,0.385693,0.399901,0.322506,0.962736,0.380467,0.815293,0.133401,0.931463,0.297627]
}
df = pd.DataFrame(data)

# 提取O=1的基准值
base_df = df[df['O'] == 1].set_index('S')[['X1','X2','X3','X4']]
# 计算O为3/7/9时各S分组的X列最大值
max_df = df[df['O'].isin([3,7,9])].groupby('S')[['X1','X2','X3','X4']].max()
# 比较得到1/0结果
compare_res = (max_df > base_df).astype(int)
# 转换为要求的长表格式
final_res = compare_res.reset_index().melt(id_vars='S', var_name='X列', value_name='结果')
# 按X列排序匹配预期输出顺序
final_res = final_res.sort_values('X列').reset_index(drop=True)
print(final_res)

运行输出结果

S X列  结果
0   100  X1   1
1   150  X1   0
2   200  X1   1
3   250  X1   1
4   100  X2   1
5   150  X2   1
6   200  X2   1
7   250  X2   0
8   100  X3   1
9   150  X3   1
10  200  X3   1
11  250  X3   1
12  100  X4   1
13  150  X4   0
14  200  X4   1
15  250  X4   1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:30:00