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

如何将含患者ID与就诊次数的字典转换为键值均为行的DataFrame

解决方法:将患者就诊字典转换为行式DataFrame

嘿,我懂你要的效果啦——就是把每个患者的3次就诊记录拆成单独的行,对吧?你之前用pd.DataFrame.from_dict(dictionary, orient='index')得到的应该是每行一个患者,列对应1、2、3次就诊,但这显然不是你想要的结构。下面给你两种简单的实现方式:

方法1:列表推导式手动拆分数据

这种方法直观易懂,通过遍历字典的键值对,把每个患者ID和对应的就诊次数逐一配对,再转成DataFrame:

import pandas as pd

patients = ['Patient01', 'patient02', 'patient03']
visits = [1,2,3]
dictionary = {k:visits for k in patients}

# 生成(患者ID, 就诊次数)的元组列表
data_rows = [(patient_id, visit_num) 
             for patient_id, visit_list in dictionary.items() 
             for visit_num in visit_list]

# 转换为DataFrame并指定列名
df = pd.DataFrame(data_rows, columns=['患者ID', '就诊次数'])
print(df)

方法2:用explode()快速拆分列表(更简洁)

Pandas的explode()方法专门用来把单元格里的列表拆成多行,搭配Series使用会非常高效:

import pandas as pd

patients = ['Patient01', 'patient02', 'patient03']
visits = [1,2,3]
dictionary = {k:visits for k in patients}

# 先把字典转成Series,再拆分列表,最后整理列名
df = pd.Series(dictionary).explode().reset_index()
df.columns = ['患者ID', '就诊次数']
print(df)

两种方法都会得到你想要的结果:

患者ID  就诊次数
0  Patient01      1
1  Patient01      2
2  Patient01      3
3  patient02      1
4  patient02      2
5  patient02      3
6  patient03      1
7  patient03      2
8  patient03      3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:45:31