2016-02-24 29 views
5

Tôi có một dataframe gấu trúc như saugấu trúc groupby và chuyển đổi vào danh sách json

idx, f1, f2, f3 
1, a, a, b 
1, b, a , c 
1, a, b, c 
. 
. 
. 
86 
87 e, e , e 

tôi cần phải chuyển đổi các cột khác để danh sách các từ điển dựa trên cột idx. do đó, kết quả cuối cùng phải là:

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}] 

Có thể làm điều gì đó như thế này bằng cách sử dụng nhóm trong gấu trúc?

Trả lời

2

Bạn có thể sử dụng groupby bởi index và sau đó applyto_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 

Hoặc nếu cột idx không phải là 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 
+0

Làm thế nào nó hoạt động? Xin vui lòng không quên chấp nhận giải pháp, nếu là hữu ích. Cảm ơn. – jezrael

Các vấn đề liên quan