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

Python/Pandas逐行统计非连续1值簇并按ID分组导出的实现方法

解决方案

实现思路

  1. 先固定数值列的处理顺序,和输入DataFrame的列顺序保持一致,确保连续1的结束位置识别准确
  2. 逐行对0/1序列做连续块标记:通过掩码识别1的位置,碰到0就给后续的1打新的分组标签,相同标签的为同一个连续1簇
  3. 按簇分组统计长度,同时取每个簇最后一个位置对应的列名作为标识
  4. 按要求格式化输出到txt文件,11000行的数据量处理无压力

完整可运行代码

import pandas as pd

# ---------------------- 数据读入部分 ----------------------
# 此处替换为你自己的数据源读取逻辑,比如 pd.read_excel("你的文件路径.xlsx")
df = pd.DataFrame({
    'ID': [335344, 358213, 358249, 365663],
    '20-21': [0,1,0,0],
    '19-20': [0,1,0,0],
    '18-19': [1,0,0,0],
    '17-18': [1,1,0,1],
    '16-17': [1,1,0,1],
    '15-16': [0,1,0,1],
    '14-15': [0,1,0,1],
    '13-14': [0,0,0,1],
    '12-13': [0,1,0,0],
    '11-12': [0,0,0,0]
})

# 提取所有数值列(排除ID列,保留原列顺序)
value_columns = [col for col in df.columns if col != 'ID']

# ---------------------- 核心处理逻辑 ----------------------
def parse_continuous_clusters(row):
    val_sequence = row[value_columns].values
    col_sequence = row[value_columns].index
    # 筛选出值为1的位置掩码
    one_mask = val_sequence == 1
    # 全0行直接返回空结果
    if not one_mask.any():
        return []
    # 给连续的1打分组标签
    block_tags = (~one_mask).cumsum()[one_mask]
    # 按标签分组统计每个簇的结束列和长度
    cluster_list = []
    for tag, group in pd.Series(col_sequence[one_mask]).groupby(block_tags):
        cluster_list.append((group.iloc[-1], len(group)))
    return cluster_list

df['cluster_result'] = df.apply(parse_continuous_clusters, axis=1)

# ---------------------- 导出到TXT文件 ----------------------
with open("output_result.txt", "w", encoding="utf-8") as f:
    for _, row in df.iterrows():
        clusters = row['cluster_result']
        # 若需要保留全0的ID,可注释掉下面这行判断
        if not clusters:
            continue
        f.write(f"{row['ID']}\n")
        for end_col, count in clusters:
            f.write(f"    {end_col}: {count}\n")
        # 每个ID之间加空行分隔
        f.write("\n")

注意事项

  • 运行后会在当前目录生成output_result.txt,格式和你要求的预期输出完全一致
  • 如果需要保留全0的ID记录,删掉导出部分的if not clusters: continue即可
  • 数值列的处理顺序完全沿用输入DataFrame的列顺序,不需要额外调整排序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:48:03