删除 DF 中的重复项并在 python 中转换为 JSON obj

王林
发布: 2024-02-22 13:20:03
转载
828人浏览过

删除 df 中的重复项并在 python 中转换为 json obj

问题内容

我有一个类似于下面的 df

name         series
=============================
a             a1
b             b1
a             a2
a             a1
b             b2
登录后复制

我需要将系列转换为一个列表,该列表应分配给每个名称,例如字典或 json obj,如下所示

{
   "a": ["a1", "a2"],
   "b": ["b1", "b2"]
}
登录后复制

到目前为止,我已经尝试使用 groupby,但它只是将所有内容分组为一个单独的字典

test = df.groupby("series")[["name"]].apply(lambda x: x)
登录后复制

上面的代码给出了一个类似 df 的输出

立即学习Python免费学习笔记(深入)”;

Series
Name
A     0   A1
      2   A2
      3   A1
B     1   B1
      4   B2
登录后复制

非常感谢任何帮助

谢谢

AI Sofiya
AI Sofiya

一款AI驱动的多功能工具

AI Sofiya 109
查看详情 AI Sofiya

正确答案


首先 drop_duplicates 确保有 ,然后 groupby.agg 作为列表:

out = df.drop_duplicates().groupby('name')['series'].agg(list).to_dict()
登录后复制

或者拨打unique

out = df.groupby('name')['series'].agg(lambda x: x.unique().tolist()).to_dict()
登录后复制

输出:{'a': ['a1', 'a2'], 'b': ['b1', 'b2']}

如果您还有其他列,请确保仅保留感兴趣的列:

out = (df[['name', 'series']].drop_duplicates()
       .groupby('name')['series'].agg(list).to_dict()
      )
登录后复制

对列表进行排序:

out = (df.groupby('name')['series']
         .agg(lambda x: sorted(x.unique().tolist())).to_dict()
      )
登录后复制

示例:

# input
  Name Series
0    A     Z1
1    B     B1
2    A     A2
3    A     Z1
4    B     B2

# output
{'A': ['A2', 'Z1'], 'B': ['B1', 'B2']}
登录后复制

以上就是删除 DF 中的重复项并在 python 中转换为 JSON obj的详细内容,更多请关注php中文网其它相关文章!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号