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

Python中精简DataFrame数组列数据:保留Top100疾病并过滤空值

处理DataFrame数组列的高频疾病过滤方案

以下是针对需求的具体实现步骤,用Pandas就能搞定:

1. 统计所有疾病的出现频率

首先得把数组形式的疾病列拆成单个条目,才能统计每个疾病的出现次数:

import pandas as pd

# 假设数据集已加载到df中
# 展开数组列,每行只保留一个疾病
exploded_df = df.explode('Diseases')
# 统计疾病出现次数,取前100个高频疾病,转成集合提升查询效率
top100_diseases = set(exploded_df['Diseases'].value_counts().head(100).index)

2. 过滤每个数组中的非高频疾病

对原DataFrame的Diseases列逐行过滤,只保留在top100范围内的疾病:

# 对每个疾病数组做过滤
df['Diseases'] = df['Diseases'].apply(lambda x: [disease for disease in x if disease in top100_diseases])

如果数组里有重复疾病,想过滤后去重的话,可改成:

df['Diseases'] = df['Diseases'].apply(lambda x: list(set([d for d in x if d in top100_diseases])))

3. 删除过滤后为空的记录

过滤完成后,有些行的Diseases列会变成空数组,直接删除这些行:

# 保留Diseases列长度大于0的行
df = df[df['Diseases'].apply(len) > 0]

补充提示

  • 如果Diseases列存在NaN值(不是空数组),可以提前处理:df = df.dropna(subset=['Diseases']),再执行后续操作。
  • 5万条数据量不大,这些操作的执行速度不会有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:24:50