我正在尝试使用pandas对某些数据进行规范化处理,我可以使用一个简单的示例来处理它,但不能用于更复杂的示例。
我在下面包含了我的代码,并注释了哪些行有效和无效。
我怀疑这可能与不起作用的json有关,其中有“ DayTypes”的多个值,而起作用的json没有。
我在阳光下尝试了所有的排列方式,终于接受了失败,并期待您善良的灵魂请帮助我。
import pandas as pd
import json
from pandas.io.json import json_normalize
json_data = "[{\"DayTypes\":{\"Monday\":\"true\"},\"OpeningHours\":{\"OpenPeriod\"" \
":{\"StartTime\":\"07:00:00.000\",\"EndTime\":\"15:00:00.000\"}}},{\"DayTypes\"" \
":{\"Tuesday\":\"true\",\"Wednesday\":\"true\",\"Thursday\":\"true\"},\"OpeningHours\"" \
":{\"OpenPeriod\":[{\"StartTime\":\"07:00:00.000\",\"EndTime\":\"13:00:00.000\"},{\"" \
"StartTime\":\"17:00:00.000\",\"EndTime\":\"19:00:00.000\"}]}},{\"DayTypes\":{\"Friday\"" \
":\"true\"},\"OpeningHours\":{\"OpenPeriod\":{\"StartTime\":\"07:00:00.000\",\"EndTime\":\"" \
"20:00:00.000\"}}},{\"DayTypes\":{\"Saturday\":\"true\"},\"OpeningHours\":{\"OpenPeriod\":{\"" \
"StartTime\":\"08:00:00.000\",\"EndTime\":\"20:00:00.000\"}}},{\"DayTypes\":{\"Sunday\"" \
":\"true\"},\"OpeningHours\":{\"OpenPeriod\":{\"StartTime\":\"11:00:00.000\",\"EndTime\":\"" \
"13:00:00.000\"}}}]"
json_data1 = "[{\"DayTypes\": {\"MondayToFriday\": \"true\"}, \"OpeningHours\": {\"OpenPeriod\": {\"StartTime\": \"06:15:00.000\", \"EndTime\": \"20:40:00.000\"}}}, {\"DayTypes\": {\"Saturday\": \"true\"}, \"OpeningHours\": {\"OpenPeriod\": {\"StartTime\": \"07:10:00.000\", \"EndTime\": \"21:30:00.000\"}}}, {\"DayTypes\": {\"Sunday\": \"true\"}, \"OpeningHours\": {\"Unavailable\": \"true\"}}, {\"DayTypes\": {\"MondayToFriday\": \"true\"}, \"OpeningHours\": {\"OpenPeriod\": {\"StartTime\": \"07:10:00.000\", \"EndTime\": \"13:50:00.000\"}}}]"
# print(type(json_data))
data = json.loads(str(json_data))
data1 = json.loads(str(json_data1))
# this doesn't work :(
# json_normalize(data, 'DayTypes',[['OpeningHours','OpenPeriod','StartTime'],['OpeningHours','OpenPeriod','EndTime']], errors='ignore' )
# this works as expected
json_normalize(data1, 'DayTypes',[['OpeningHours','OpenPeriod','StartTime'],['OpeningHours','OpenPeriod','EndTime']], errors='ignore' )
我希望看到带有日期,开始时间和结束时间的表格。如果一天中有多个开始和结束时间,那么这些将只是表中的新行。
Day StartTime EndTime
MondayToFriday 06:15:00.000 20:40:00.000
Saturday 07:10:00.000 21:30:00.000
Sunday nan nan
MondayToFriday 07:10:00.000 13:50:00.000
更新1: 如果我从列表中获取第一项(数据[0],“ DayTypes”等),则会获得星期一的详细信息。如果我调用data [2],data [3]和data [4],我也可以返回Fri,Sat和Sun。如果我尝试数据[1],它会炸毁。这是“星期二,星期三,星期四”的列表。如果这些内容显示在一行上,我将感到非常高兴。