假设我有一个包含 2 列的数据框:
col1 fre
a,d 2
b,d 4
a,h 1
k,l 5
b,c 3
a,f 7
我可以制作一个字典,其中 key
是 col1
的第一个元素。而 value
是 col1
和 fre
的第二个元素的每一对。?
例如:
{'key': 'a',
['Results': {'d': 2}, {'h': 1},{'f': 7 } ]} , {`key`: 'b', ['Results' : {'d' : 4},{'c' :3} ]}, {`key`: 'k', ['Results' : {'l' : 5} ]}
答案 0 :(得分:3)
您可以先使用 apply 函数创建一个新列,然后使用该列对数据进行分组和格式化
df['gkey'] = df.apply(lambda row: row['col1'].split(',')[0], axis=1)
l = []
for key, value in df.groupby('gkey'):
l.append({'key': key, 'Results': [{row['col1'].split(',')[1]: row['fre']}for index, row in value.iterrows()]})
答案 1 :(得分:1)
如果你可以使用 numpy,你可以先创建一个外部字典,以所有 col1 first 值作为键。 set 操作负责处理这些值的多次出现。 然后,您可以遍历 dict 中的所有键并生成新键。
mydict = {okey: {} for okey in set([col1[0] for col1 in df['col1'].tolist()])}
for okey in mydict.keys():
msk = np.where([m.startswith(okey) for m in df['col1'].tolist()])[0]
mydict[okey] = {row[0][-1]: row[1] for row in np.array(df)[msk]}
答案 2 :(得分:1)
是的,你可以! Pandas 有 pandas.DataFrame.to_dict
方法 - 有关文档,请单击 here。
您获得了包含两列的数据框,只需在其上调用 df.to_dict()
,就像在代码示例中一样:
df = pd.DataFrame({'col1': [1, 2],
'col2': [0.5, 0.75]},
index=['row1', 'row2'])
df.to_dict()
df
变量现在包含一个字典,语法为:{'col1': {'row1': 1, 'row2': 2}, 'col2': {'row1': 0.5, 'row2': 0.75}}
。如果您在启动 DataFrame 时遇到问题,请检查 pandas.DataFrame
上的 documentation。