如何统计pandas DataFrame单元格内元素连续出现次数并生成新列
完整实现代码
首先确保已经导入依赖库:
import pandas as pd from itertools import groupby from collections import Counter
你已经完成了consecutive列的生成,后续处理步骤如下:
# 定义函数提取每个国家的最长连续访问次数,连续次数<=1的统一记为0 def calc_country_cnt(row): country_max = {} for item in row['consecutive']: for country, cnt in item.items(): # 仅保留当前国家最长的连续次数 if cnt > country_max.get(country, 0): country_max[country] = cnt # 连续次数<=1的替换为0 return {k: v if v > 1 else 0 for k, v in country_max.items()} # 生成每个用户的国家计数字典 df6['cnt_map'] = df6.apply(calc_country_cnt, axis=1) # 将字典列展开为宽表,合并name列后调整列顺序得到最终结果 result = pd.concat( [df6['name'], pd.json_normalize(df6['cnt_map']).fillna(0).astype(int)], axis=1 )[['name', 'UK', 'US', 'CA', 'Mexico', 'AUS']]
执行后打印result即可得到你需要的输出格式。
内容的提问来源于stack exchange,提问作者MTALY
相关产品推荐
相关产品推荐

