Перебирать pandas и записывать каждую группу строк, проиндексированных по значению? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть фрейм данных следующей формы:

     id   |     x1     |   x2
---------------------------------
0     1   |    Apples  |    5 
1     1   |    Oranges |    3 
2     1   |    Apples  |    6 
3     2   |    Bananas |   4.5 
4     2   |    Oranges |    7 
5     3   |    Oranges |   5.5 
6     3   |    Apples  |    5 

Я хочу l oop через фрейм данных и написать новый json файл для каждой группы строк, проиндексированных 'id 'record_<id>.json:

например, record_1. json:

{ "record" : [
       { "x1": "Apples" , 
         "x2":    5  
        },
       { "x1": "Oranges" , 
         "x2":    3  
        },
       { "x1": "Apples" , 
         "x2":    6  
        } 
   ]
}

record_2. json

{ "record" : [
       { "x1": "Bananas" , 
         "x2":   4.5  
        },
       { "x1": "Oranges" , 
         "x2":    7  
        } 
   ]
}

et c ...

Есть ли простой способ сделать это?

1 Ответ

2 голосов
/ 05 августа 2020

IIU C, просто l oop через объект groupby:

for _, i in df.groupby("id"):
    print ({"record":i.drop("id",1).to_dict("records")})

{'record': [{'x1': 'Apples', 'x2': 5.0}, {'x1': 'Oranges', 'x2': 3.0}, {'x1': 'Apples', 'x2': 6.0}]}
{'record': [{'x1': 'Bananas', 'x2': 4.5}, {'x1': 'Oranges', 'x2': 7.0}]}
{'record': [{'x1': 'Oranges', 'x2': 5.5}, {'x1': 'Apples', 'x2': 5.0}]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...