Я понял, что первая опубликованная версия была действительно неясной и не соответствовала правилам веб-сайта, извините за это.Я удалил предыдущий и сделал его более понятным.
Это мой первый пост, и я исследовал свою проблему, но не смог найти решение.
На самом деле, у меня есть DataFrame, подобныйthis (столбец SecurityInfo содержит словари, которые я подробно опишу ниже)
Rent_ID UserId Car_Id Rent_Date SecurityInfo
0 1 2 2018/05/09 dict_1
1 2 4 2018/05/10 dict_2
2 3 6 2018/05/11 dict_3
Ниже вы можете увидеть, как выглядят словари.Один словарь на ячейку.
{
"car_consumption": 99,
"car_route_option": "None",
"safetyEvents": [{
"latitude": 99.140763200350641,
"longitude": -9.6871865486956645,
"time": 1121,
"type": 3
}, {
"latitude": 99.115982330953294,
"longitude": -9.5833240979286927,
"time": 1710,
"type": 1
}, {
"latitude": 99.115982330953294,
"longitude": -9.5833240979286927,
"time": 1710,
"type": 2
},
"pollutant": {
"trip": 8.0129999999999999,
"nox": 44.960000000000001,
"co": 28.300000000000001,
"global": 8.7065000000000001
},
"ecoDriving": {
"scoreAccel": 2.5,
"score": 9.4000000000000004,
"scoreMain": 3.1000000000000001
}
}
Как видите, ключ SafetyEvent является вложенным ключом, который также содержит список словаря
Я хотел бы получить такой вывод
Rent_ID UserId Car_Id Rent_Date Car_Consumption car_route_option SafetyEvent trip nox co global scoreAccel score scoreMain
0 1 2 2018/05/09 99 None list1_of_SafetyEvent
1 2 4 2018/05/10 95 Good list2_of_SafetyEvent
2 3 6 2018/05/11 96 Bad list3_of_SafetyEvent
Я пытался использовать функцию ниже, но она работала только когда я передаю фрейм данных, содержащий только один словарь, он не принимает столбец фрейма данных как параметр
def unpack(df, column, fillna=None):
ret = None # Intitlisation retour
if fillna is None: # Si
ret = pd.concat([df, pd.DataFrame((d for idx, d in df[column].iteritems()))], axis=1)
del ret[column]
else:
ret = pd.concat([df, pd.DataFrame((d for idx, d in df[column].iteritems())).fillna(fillna)], axis=1)
del ret[column]
return ret
Я также пробовал этоно это не сработало,
df_SafetyEvent = pd.DataFrame(df['SecurityInfo'].values.tolist(), index=df.index)
кажется, что мои словари не обнаружены как словари, но я проверил тип, они на самом деле.
Спасибо за то, кто может помочь, если мойсообщение не соответствует, дайте мне знать, я исправлю его.