我正在尝试用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],它就会爆炸。这是“星期二,星期三,星期四”的名单。。我很乐意把这些放在一行上。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐