У нас есть 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))
Это дало нам некоторый способ, то есть мы получаем словари списков, но не можем затем объединить это для первого гнезда происхождения.