python - Pandas 数据框可对多列和要列出的值进行字典

标签 python pandas dictionary dataframe

我有一个数据框

id    key
a1     1
a2     1
a3     1
a4     2
a5     2
a6     3

我想创建一个字典,其中 key 作为机器编号,id 列作为列表

喜欢:

{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: ['a6']}

我可以先使用groupby,然后再使用.to_dict吗?

最佳答案

我相信您需要列出 dict 的广告值 - 使用 groupby + apply + to_dict :

d = df.groupby('key')['id'].apply(list).to_dict()
print (d)
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: ['a6']}

或者如果需要带有标量的list,请将if/else添加到apply:

d = df.groupby('key')['id'].apply(lambda x: list(x) if len(x) > 1 else x.iat[0]).to_dict()
print (d)
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: 'a6'}

关于python - Pandas 数据框可对多列和要列出的值进行字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713968/

相关文章:

python - Jinja 2 中列表的总和元素

python - 如何使用 pandas 读取文本文件键、值对?

c++ - 检查多维 map 元素是否存在的最快方法是什么?

javascript - 使用 lodash 从对象数组中获取唯一的 [key,value]

python - Django collectstatic boot broken pipe on large file upload

python - 知道目录复制何时完成

Python:带有 2 个 for 循环的 Else 语句

python - pandas groupby 计数共存

python - 为什么pandas rolling使用单维ndarray

iphone - 使用 MapKit 在 map 中的 pin(注释)标注中显示自定义 UIView