首页 > 解决方案 > 将数据框转换为字典并保留所有值

问题描述

import pandas as pd
text = [list(['(1-100-133-1710)']), 'nan', 'nan']
df = pd.DataFrame({'Text': text ,
                   'IDs': ['A11','A11','C11'],
                          }) 
df
    IDs Text
0   A11 [(1-100-133-1710)]
1   A11 nan
2   C11 nan

我有以下df

我的目标是制作df一本字典

所以我尝试以下

to_d = dict(zip(df.IDs,df.Text))

我得到以下输出

 {'A11': 'nan', 'C11': 'nan'}

但是此输出缺少行中的键A11和值。理想情况下,我想要以下输出,但 python 字典中不允许重复键[(1-100-133-1710)]0df

{'A11': '[(1-100-133-1710)]', 'A11': 'nan', 'C11': 'nan'}

因此,我想要以下输出,它将两个值组合A11到一个公共值列表中,该列表保持相同的键A11

{'A11': '[[(1-100-133-1710)]', 'nan'], 'C11': 'nan'}

如何获得我想要的输出?

标签: python-3.xstringpandaslistdictionary

解决方案


所以我们可以使用to_dict

df.groupby('IDs').Text.apply(list).to_dict()
Out[431]: {'A11': [['(1-100-133-1710)'], 'nan'], 'C11': ['nan']}

推荐阅读