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

基于唯一PIN拆分DataFrame并统计各LID的结果数量

基于唯一PIN拆分DataFrame并统计各LID的结果数量

嘿,我来帮你搞定这个需求!其实用pandas的分组功能就能轻松解决,不用你手动去遍历唯一PIN列表~ 咱们一步步来:

首先,先明确你的两个核心需求:一是给每个唯一PIN生成单独的DataFrame,二是统计每个PIN下各LID对应的结果条数。pandas的groupby函数刚好能同时满足这两个需求,而且针对几千行的数据效率也很高。

第一步:先统计各PIN下每个LID的结果数量

我们可以先对PIN和LID做分组,然后统计每个组里Results列的行数,这样就能得到每个LID对应的结果数量:

import pandas as pd
import numpy as np

# 你的示例数据
d = {
     'PIN': [445588,445588,445588,668989,668989,212121], 
     'LID': [124, 124, 125, 625, 625, 325],    
     "Results": [8,5,3,23,11,45]
    }
df = pd.DataFrame(data=d)

# 统计每个PIN-LID组合的结果数量,结果存到新列Result_Count里
count_summary = df.groupby(['PIN', 'LID'])['Results'].count().reset_index(name='Result_Count')
print("各PIN-LID的结果数量统计:")
print(count_summary)

运行这段代码后,你会得到一个汇总表,里面清晰显示每个PIN下每个LID有多少条结果。

第二步:按唯一PIN拆分DataFrame并合并统计数据

接下来我们可以直接按PIN分组,把每个分组存到一个字典里(用PIN值当键,这样后续调用非常方便),同时把刚才的统计结果合并到每个拆分后的DataFrame中:

# 用字典存储每个PIN对应的DataFrame,方便后续调用
pin_dataframes = {}

# 遍历按PIN分组后的结果
for pin_value, group_df in df.groupby('PIN'):
    # 把当前PIN对应的统计结果合并到原始分组数据中
    merged_group = group_df.merge(count_summary[count_summary['PIN'] == pin_value], 
                                  on=['PIN', 'LID'], 
                                  how='left')
    # 存入字典
    pin_dataframes[pin_value] = merged_group

# 示例:查看PIN为445588的DataFrame
print("\nPIN为445588的完整数据(含LID结果计数):")
print(pin_dataframes[445588])

运行后你会看到,每个拆分后的DataFrame里都多了一列Result_Count,显示当前行对应的LID有多少条结果。比如PIN445588的LID124对应的Result_Count是2,因为它有两个结果值。

额外小提示

如果你只想获取每个PIN的统计汇总表(不需要原始Results数据),可以直接对统计后的count_summary做分组拆分:

pin_count_dfs = {}
for pin_value, group_df in count_summary.groupby('PIN'):
    pin_count_dfs[pin_value] = group_df

# 查看PIN为668989的统计汇总
print("\nPIN为668989的统计汇总:")
print(pin_count_dfs[668989])

为什么不推荐你原来的手动遍历唯一列表的方式?因为pandas的groupby是底层优化过的,比手动转列表再搜索要高效得多,尤其是数据量上千行的时候,速度差异会很明显,而且代码也更简洁易读。

备注:内容来源于stack exchange,提问作者Sofie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:23:08