将一个嵌套的dictionary WITH STRING OBJECT列表转换为pandas Dataframe.<



我有一个实时url "linktoAPI"包含列表的嵌套字典。我从下面的链接中尝试了许多解决方案,但没有一个能帮助我实现我想要的。显然,这是因为嵌套字典(key: "history_value")的值不统一,并且包含长字符串对象。

从数据帧的列中提取字典值(得到错误:'get'不适用于字符串)

如何将嵌套字典列表转换为pandas DataFrame?(得到错误:'str'对象不是映射)

使用pandas将一列字典拆分为多个独立的列,

https://www.skytowner.com/explore/splitting_dictionary_into_separate_columns_in_pandas_dataframe

from urllib.request import urlopen
import pandas as pd
import json 
url = "LINKTOAPI"
response = urlopen(url)
data_json = json.loads(response.read())
baoluu = pd.DataFrame(data_json)
display(baoluu.head())

运行此代码,您可以看到列"history_value"包含一个不统一的字典。我希望这些列被分成"ngaybaolu ", "ngayhoclai"one_answers";lydo"。请帮帮我。非常感谢!!

如果我做对了,这应该可以工作:

import json
import requests
import pandas as pd
req = requests.get('https://office.ieltsvietop.vn/api/get_data/history')
req_json = req.json()
df = pd.DataFrame(json.loads(r['history_value']) for r in req_json)

这个df应该像

request_id ketoan_id lop_id  ... danhsachcho chinhanh_old chinhanh
0            11      2470    551  ...         NaN          NaN      NaN
1            13      2474    551  ...         NaN          NaN      NaN
2            12      2468    564  ...         NaN          NaN      NaN
3            15      2338    442  ...         NaN          NaN      NaN
4            31      2463    239  ...         NaN          NaN      NaN
...         ...       ...    ...  ...         ...          ...      ...
5256       4699      4357    NaN  ...         NaN          NaN      NaN
5257       4695      3787    NaN  ...         NaN          NaN      NaN
5258       4679      4716    NaN  ...         NaN          NaN      NaN
5259       4694      4114    596  ...         NaN          NaN      NaN
5260       4705      4839    601  ...         NaN          NaN      NaN
[5261 rows x 20 columns]
然后用 选择所需列ngaybaoluu,ngayhoclailydo
df = df[['ngaybaoluu', 'ngayhoclai', 'lydo']]

最终的df

ngaybaoluu  ngayhoclai                                               lydo
0            NaN         NaN                   Bạn phù hợp với trình độ của lớp
1            NaN         NaN  Bạn cần lấy target để ra trường và phục vụ côn...
2            NaN         NaN              Học viên đăng kí học Speaking-express
3            NaN         NaN            Vt3 có lớp phù hợp với trình độ của bạn
4            NaN         NaN                                                NaN
...          ...         ...                                                ...
5256  22-06-2022  01-08-2022  Học viên tập trung ôn thi THPTQG. Học viên đã ...
5257  21-06-2022  21-08-2022  Học viên chưa sắp xếp được lịch học lại . Học ...
5258  21-06-2022  15-07-2022  Học viên đi  tập quân sự. Học viên đã hiểu rõ ...
5259         NaN  22-06-2022                                                NaN
5260         NaN         NaN                                                NaN
[5261 rows x 3 columns]

请注意,许多列中都有空值,这意味着url的原始响应不包含这些字段,所以没有问题。如果您想要填充这些空值,您可以查找.fillna()

相关内容

  • 没有找到相关文章

最新更新