问题内容
我有一个类似于下面的 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 的输出
Series
Name
A 0 A1
2 A2
3 A1
B 1 B1
4 B2
非常感谢任何帮助
谢谢
正确答案
首先 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的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机删除 DF 中的重复项并在 python 中转换为 JSON obj
后端开发2024-02-22
咦!没有更多了?去看看其它编程学习网 内容吧