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

求R中group_by+summarise分组统计逻辑的Python等价代码

R代码转Python等价实现

原R代码

DF %>%
  group_by(Group) %>%
  summarise(
    Var1 = mean(Option[Var_A == 1] == Option[Var_B == 1])
  )

示例DataFrame(Python)

DF = pd.DataFrame.from_dict({
    'Group': {('No_1', 1): 'Group_A',
              ('No_1', 2): 'Group_A',
              ('No_1', 3): 'Group_A',
              ('No_1', 4): 'Group_A',
              ('No_1', 5): 'Group_A',
              ('No_1', 6): 'Group_A',
              ('No_1', 7): 'Group_A',
              ('No_1', 8): 'Group_A',
              ('No_24', 1): 'Group_B',
              ('No_24', 2): 'Group_B',
              ('No_24', 3): 'Group_B',
              ('No_24', 4): 'Group_B',
              ('No_24', 5): 'Group_B',
              ('No_24', 6): 'Group_B',
              ('No_24', 7): 'Group_B',
              ('No_24', 8): 'Group_B'},
    'Var_A': {('No_1', 1): 0,
              ('No_1', 2): 0,
              ('No_1', 3): 0,
              ('No_1', 4): 1,
              ('No_1', 5): 0,
              ('No_1', 6): 0,
              ('No_1', 7): 0,
              ('No_1', 8): 0,
              ('No_24', 1): 0,
              ('No_24', 2): 0,
              ('No_24', 3): 0,
              ('No_24', 4): 1,
              ('No_24', 5): 0,
              ('No_24', 6): 0,
              ('No_24', 7): 0,
              ('No_24', 8): 0},
    'Var_B': {('No_1', 1): 0,
              ('No_1', 2): 0,
              ('No_1', 3): 0,
              ('No_1', 4): 1,
              ('No_1', 5): 0,
              ('No_1', 6): 0,
              ('No_1', 7): 0,
              ('No_1', 8): 0,
              ('No_24', 1): 0,
              ('No_24', 2): 0,
              ('No_24', 3): 0,
              ('No_24', 4): 1,
              ('No_24', 5): 0,
              ('No_24', 6): 0,
              ('No_24', 7): 0,
              ('No_24', 8): 0},
    'Option': {('No_1', 1): 1,
               ('No_1', 2): 2,
               ('No_1', 3): 3,
               ('No_1', 4): 4,
               ('No_1', 5): 5,
               ('No_1', 6): 6,
               ('No_1', 7): 7,
               ('No_1', 8): 8,
               ('No_24', 1): 1,
               ('No_24', 2): 2,
               ('No_24', 3): 3,
               ('No_24', 4): 4,
               ('No_24', 5): 5,
               ('No_24', 6): 6,
               ('No_24', 7): 7,
               ('No_24', 8): 8}
})

Python等价实现

逻辑说明

原R代码核心逻辑:按Group分组后,提取每组中Var_A == 1对应的Option值、Var_B == 1对应的Option值,比较二者是否相等,最终取该布尔结果的均值(因每组仅存在一个符合条件的Option值,均值等价于布尔值的数值化结果:相等为1,不等为0)。

代码实现

import pandas as pd

result = DF.groupby('Group').apply(
    lambda group: (group.loc[group['Var_A'] == 1, 'Option'].iloc[0] == group.loc[group['Var_B'] == 1, 'Option'].iloc[0])
).reset_index(name='Var1')

# 查看结果
print(result)

输出结果

Group  Var1
0  Group_A     1
1  Group_B     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:40