pandas groupby 并转换为 json 列表
Posted
技术标签:
【中文标题】pandas groupby 并转换为 json 列表【英文标题】:pandas groupby and convert to json list 【发布时间】:2016-06-07 02:24:29 【问题描述】:我有一个如下所示的 pandas 数据框
idx, f1, f2, f3
1, a, a, b
2, b, a, c
3, a, b, c
.
.
.
87 e, e, e
我需要将其他列转换为基于 idx 列的字典列表。所以,最终结果应该是:
idx, features
1 , [f1:a, f2:a, f3:b, f1:b, f2:a, f3:c, f1:a, f2:b, f3:c]
.
.
.
87, [f1: e, f2:e, f3:e]
是否可以在 pandas 中使用 groupby 做类似的事情?
【问题讨论】:
重现这个的代码在哪里? 【参考方案1】:您可以通过index
使用groupby
,然后使用apply
to_json
:
print df
f1 f2 f3
idx
1 a a b
1 b a c
1 a b c
87 e e e
print df.groupby(level=0).apply(lambda x: x.to_json(orient='records'))
1 ["f1":"a","f2":"a","f3":"b","f1":"b","f2":"...
87 ["f1":"e","f2":"e","f3":"e"]
dtype: object
或者如果列idx
不是index
:
print df
idx f1 f2 f3
0 1 a a b
1 1 b a c
2 1 a b c
3 87 e e e
print df.groupby('idx').apply(lambda x: x.to_json(orient='records'))
idx
1 ["idx":1,"f1":"a","f2":"a","f3":"b","idx":1...
87 ["idx":87,"f1":"e","f2":"e","f3":"e"]
dtype: object
【讨论】:
它是如何工作的?如果有帮助,请不要忘记接受解决方案。谢谢。to_json
创建一个字符串值列,如果您想在不重新解析 json 的情况下获取实际列表的列表,您可以执行 df.groupby('idx').apply(lambda g: g.to_dict(orient='records'))
,然后调用 @987654334在结果上 @ 以获取列表列表,或 .to_dict()
以获取 idx => [f1: ..., f2: ..., f3: ...]
的字典
我怎样才能给这个 json 我预先确定的模式?如果我只希望 json 中 4 列中的 2 列具有某种差异格式?
@j' - 如果理解正确,需要自定义函数 :(以上是关于pandas groupby 并转换为 json 列表的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas.core.groupby.SeriesGroupBy 转换为 DataFrame