Python 3.x 将dataframe转换为字典并保留所有值
我有以下几点 我的目标是使df成为一本词典 所以我尝试下面的方法Python 3.x 将dataframe转换为字典并保留所有值,python-3.x,string,pandas,list,dictionary,Python 3.x,String,Pandas,List,Dictionary,我有以下几点 我的目标是使df成为一本词典 所以我尝试下面的方法 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-
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
我得到以下输出
to_d = dict(zip(df.IDs,df.Text))
但该输出缺少键A11和df中第0行的值[1-100-133-1710]。理想情况下,我希望获得以下输出,但python字典中不允许重复键
{'A11': 'nan', 'C11': 'nan'}
因此,我需要以下输出,它将A11中的两个值合并到一个公共值列表中,该列表保留相同的键A11
如何获得所需的输出 所以我们可以使用
{'A11': '[(1-100-133-1710)]', 'A11': 'nan', 'C11': 'nan'}
{'A11': '[[(1-100-133-1710)]', 'nan'], 'C11': 'nan'}
df.groupby('IDs').Text.apply(list).to_dict()
Out[431]: {'A11': [['(1-100-133-1710)'], 'nan'], 'C11': ['nan']}