Я думаю, что это самое близкое к тому, что вы ищете. Использование DataFrame.to_json
:
df2=df.copy()
df2[['ID','Aisle']]=df2[['ID','Aisle']].apply(lambda x: x.replace(' ','').str.split(','))
print(df2)
ID Aisle Residence HomePhone CellPhone
0 [1245, 3214] [A1, A2, A3, A4] Home NaN 888888888
1 [5674] [B2, B3] Cell 777777777.0 999999999
df2.T.to_json()
Вывод:
'{"0":{"ID":["1245","3214"],"Aisle":["A1"," A2"," A3"," A4"],"Residence":"Home","HomePhone":null,"CellPhone":888888888},"1":{"ID":["5674"],"Aisle":["B2","B3"],"Residence":"Cell","HomePhone":777777777.0,"CellPhone":999999999}}'
Вы также можете попробовать это:
def split_func(x):
try:
return x.replace(' ','').str.split(',')
except:
return x
df2=df2.apply(split_func)
, но имейте в виду, что все ячейки типа str будут преобразованы в список
df2.T.to_json()
'{"0":{"ID":["1245","3214"],"Aisle":["A1","A2","A3","A4"],"Residence":["Home"],"HomePhone":null,"CellPhone":888888888},"1":{"ID":["5674"],"Aisle":["B2","B3"],"Residence":["Cell"],"HomePhone":777777777.0,"CellPhone":999999999}}'