【发布时间】:2017-01-18 17:10:31
【问题描述】:
我有一个数据框 df,它看起来如下:
a b c d
0 8 xx 17 1.0
1 8 xy 19 1.0
2 8 zz 13 0.0
3 9 tt 8 5.0
我正在尝试创建一个字典,其中包含一个包含元组列表的键 像下面这样:
{8:[(17,1.0),(19,1.0),(13,0.0)], 9:[(8,5.0)]}
这里,key来自a列,元组列表是c列和d列,其中key为a。我也将其应用于其他数据集并尝试过
df_new = df.groupby(['a'])[['c','d']).apply(lambda x: [tuple(x) for x in x.values])
但是,我不断收到错误
raise TypeError('Series.name must be a hashable type')
TypeError: Series.name must be a hashable type
我已尝试删除 groupby 中的 ['a'] 并将其保留为 'a',如下所示:
df_new = df.groupby('a')[['c','d']).apply(lambda x: [tuple(x) for x in x.values])
但是,我得到相同的以下错误:
raise TypeError('Series.name must be a hashable type')
TypeError: Series.name must be a hashable type
我不想让原始数据框 df 中的所有内容都不可变。我想保持原样。
有没有办法使用 pandas 功能来实现这一点?我真的不想制作列表,然后按索引将一些压缩在一起并从中创建一个字典。
【问题讨论】:
-
你的熊猫版本是什么?
print (pd.show_versions())?
标签: python pandas dictionary dataframe