【问题标题】:pandas groupby and convert to json listpandas groupby 并转换为 json 列表
【发布时间】: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 做类似的事情?

【问题讨论】:

  • 重现这个的代码在哪里?

标签: python dictionary pandas


【解决方案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' - 如果理解正确,需要自定义函数 :(
猜你喜欢
  • 2021-11-14
  • 2020-09-10
  • 1970-01-01
  • 2017-01-12
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2013-05-30
相关资源
最近更新 更多