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

Pandas实现行小计:合并status为0/1的行并保留status=2行

解决方案

需求说明

原DataFrame如下:

host  status count
0   ast2  0      1
1   ast2  1      2
2   ast2  2      3
3   ast3  0      4
4   ast3  1      5
5   ast3  2      6
6   ast9  0      7
7   ast9  2      8

需要将每个host下status为0或1的行合并为status=0的行(count求和),同时保留status=2的行不变,得到目标结果。

实现代码

import pandas as pd

# 构造原DataFrame
df = pd.DataFrame({
    'host': ['ast2', 'ast2', 'ast2', 'ast3', 'ast3', 'ast3', 'ast9', 'ast9'],
    'status': [0, 1, 2, 0, 1, 2, 0, 2],
    'count': [1, 2, 3, 4, 5, 6, 7, 8]
})

# 1. 分离status=2的行,直接保留原数据
df_status2 = df[df['status'] == 2].copy()

# 2. 处理status为0/1的行:按host分组求和count,统一设置status为0
df_01 = df[df['status'].isin([0, 1])].groupby('host', as_index=False)['count'].sum()
df_01['status'] = 0

# 3. 合并两部分数据,按host和status排序后重置索引
result = pd.concat([df_01, df_status2]).sort_values(by=['host', 'status']).reset_index(drop=True)

print(result)

运行结果

host  status  count
0   ast2       0      3
1   ast2       2      3
2   ast3       0      9
3   ast3       2      6
4   ast9       0      7
5   ast9       2      8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:35:21