мультииндекс pandas датафрейм в словарь / JSON - PullRequest
0 голосов
/ 24 апреля 2020

У нас есть CSV с несколькими столбцами, которые мы хотим преобразовать в словарь и, в конечном итоге, JSON объект. Два из этих столбцов мы хотим вкладывать. Поэтому, учитывая следующий кадр данных:

    Orig  Dest  B   C
0   1     3     3   2
1   1     2     3   2
2   1     1     0   9 
0   2     3     3   2
1   2     2     3   2
2   2     1     0   9 

, мы хотим, чтобы это выглядело следующим образом:

Orig: 1 {
         Dest:3 {
                 B: 3, C:2}
         Dest:2 {
                 B: 3, C: 2}
...
Orig: 2 {
         Dest:3 {
                 B: 3, C:2}
         Dest:2 {
                 B: 3, C: 2}
....

Это то, что мы пробовали до сих пор:


MSOAs = csvfile.residence.unique()

MSOAdict2 = dict()

MSOAdicts = []

csvfile.reset_index(drop=True, inplace=True)

for x in MSOAs:
    MSOAorigin = csvfile.loc[csvfile["residence"] == x]
    MSOAorigin.drop(["residence"], axis =1, inplace = True)
    MSOAdests = MSOAorigin.workplace.unique()
    for y in MSOAdests: 
        MSOAdest = MSOAorigin.loc[MSOAorigin["workplace"] == y]
        MSOAdest.drop(["workplace"], axis =1, inplace = True)
        destlistvalues = []
        #print(MSOAdest.to_dict('r'))
        destlistvalues.append(MSOAdest.to_dict('r'))
    destDict = dict(zip(MSOAdests, destlistvalues))
    print(destDict)
    MSOAdicts.append(destDict)

finaldict = dict(zip(MSOAs, MSOAdicts))


Это дало нам некоторый способ, то есть мы получаем словари списков, но не можем затем объединить это для первого гнезда происхождения.

...