【发布时间】:2022-10-23 20:20:14
【问题描述】:
df 具有以下列:
指数(
['level_id', 'description', 'level_type', '难度', '解决方案', '修饰符','last_modified','time_limit','tags','level_options', '额外信息','提示']
, dtype='对象')
我正在转换的列是 =“level_options”
下面是 level_options 第一行中的数据:
{“标记”:“正常”,“选项”:{“1”:“二氧化碳”,“2”: “氧气”,“3”:“尿液”,“4”:“汗水”},“max_score”:1, “随机选项”:“假”,“正确选项”:[“2”]}
然后在下面的代码中:我手动传递了上面的第一行,得到了预期的输出。
> j2=[{"marking": "normal", "options": {"1": "Yes", "2": "No"}, "max_score": 1, "random_options": "false", "correct_options": ["1"]}] > pd.json_normalize(j2)输出:
marking max_score random_options correct_options options.1 options.2 options.3 options.4 normal 1 false [2] Carbon dioxide Oxygen Urine Sweat但是在遍历所有行时,我没有得到输出。
我在下面的代码中使用了这个我应该得到 6 个列表但得到空列表的地方。预期输出的 PFA-final outputOption1=[] Option2=[] Option3=[] Option4=[] Option5=[] Correct_option=[] try: > for index, row in df.iterrows(): > l=row["level_options"] > print(l) except: > print(index,row) > l = json.loads(l) > print(l) > for i in l: > i = pd.normalize_json(i) > print(i) > if i['options'] == '1': > Option1.append(i['value']) > elif i['options'] == '2': > Option2.append(i['value']) > elif i['options'] == '3': > Option3.append(i['value']) > elif i['options'] == '4': > Option4.append(i['value']) > elif i['options'] == '5': > Option5.append(i['value']) > elif i['options'] == 'correct_options': > Correct_option.append(i['value'])我什至使用 json.loads 而不是 json_normalize 但发生错误
下面是 2 行 dataframe= df["level_options"]
{“标记”:“正常”,“选项”:{“1”:“二氧化碳”,“2”: “氧气”,“3”:“尿液”,“4”:“汗水”},“max_score”:1, “随机选项”:“假”,“正确选项”:[“2”]} {“标记”: “正常”,“选项”:{“1”:“是”,“2”:“否”},“max_score”:1, “随机选项”:“假”,“正确选项”:[“1”]}
下面显示的输出是我在将每个列表合并为单个数据框后所期望的,我遇到的问题是在检索列表时......
谢谢并恭祝安康
options.1 options.2 options.3 options.4 options.5 correct_options Carbon dioxide Oxygen Urine Sweat NaN [2] Yes No NaN NaN NaN [1]
【问题讨论】:
标签: python json pandas dataframe