【发布时间】:2021-12-31 01:39:52
【问题描述】:
我想将所有这些元素作为列按以下顺序制作一个数据框:
来自“播放列表”: 'name'、'collaborative'、'pid'、'modified_at'、'num_tracks'、'num_albums'、'num_followers'、 'num_edits'、'duration_ms'、'num_artists'
来自“轨道”: '位置', 'artist_name'、'track_uri'、'artist_uri'、'track_name'、'album_uri'、'duration_ms'、'album_name'
来自“信息”: 'generated_on'、'slice'、'版本'
json文件的一部分如下:
{
"info": {
"generated_on": "2017-12-03 08:41:42.057563",
"slice": "0-999",
"version": "v1"
},
"playlists": [
{
"name": "Throwbacks",
"collaborative": "false",
"pid": 0,
"modified_at": 1493424000,
"num_tracks": 52,
"num_albums": 47,
"num_followers": 1,
"tracks": [
{
"pos": 0,
"artist_name": "Missy Elliott",
"track_uri": "spotify:track:0UaMYEvWZi0ZqiDOoHU3YI",
"artist_uri": "spotify:artist:2wIVse2owClT7go1WT98tk",
"track_name": "Lose Control (feat. Ciara & Fat Man Scoop)",
"album_uri": "spotify:album:6vV5UrXcfyQD1wu4Qo2I9K",
"duration_ms": 226863,
"album_name": "The Cookbook"
},
{
"pos": 1,
"artist_name": "Britney Spears",
"track_uri": "spotify:track:6I9VzXrHxO9rA9A5euc8Ak",
"artist_uri": "spotify:artist:26dSoYclwsYLMAKD3tpOr4",
"track_name": "Toxic",
"album_uri": "spotify:album:0z7pVBGOD7HCIB7S8eLkLI",
"duration_ms": 198800,
"album_name": "In The Zone"
},
],
"num_edits": 6,
"duration_ms": 11532414,
"num_artists": 37
},
当我运行程序时,它给出了以下错误:
TypeError Traceback(最近一次调用最后一次) ~\AppData\Local\Temp/ipykernel_3208/3949258436.py 在 16 17 ---> 18 数据= pd.json_normalize(js['playlists'], ['name', 'collaborative', 'pid', 'modified_at', 'num_tracks', 'num_albums', 19 'num_followers'、'tracks'、'num_edits'、'num_artists']、js['info']) 20
~\anaconda3\lib\site-packages\pandas\io\json_normalize.py in _json_normalize(data, record_path, meta, meta_prefix, record_prefix, errors, sep, max_level) 293 294 meta_vals:默认字典=默认字典(列表) --> 295 meta_keys = [sep.join(val) for val in _meta] 296 297 def _recursive_extract(数据,路径,seen_meta,级别=0):
~\anaconda3\lib\site-packages\pandas\io\json_normalize.py in (.0) 293 294 meta_vals:默认字典=默认字典(列表) --> 295 meta_keys = [sep.join(val) for val in _meta] 296 297 def _recursive_extract(数据,路径,seen_meta,级别=0):
TypeError: 序列项 0: 预期的 str 实例,找到字典
这是我的代码:
import json
import pandas as pd
import os
path = 'C:\\Users\\sotir\\Desktop\\machinedataset'
filenames = os.listdir(path)
for filename in sorted(filenames):
if filename.startswith("mpd.slice.") and filename.endswith(".json"):
fullpath = os.sep.join((path, filename))
f = open(fullpath)
js = json.load(f)
f.close()
data= pd.json_normalize(js['playlists'], ['name', 'collaborative', 'pid', 'modified_at', 'num_tracks', 'num_albums',
'num_followers', 'tracks', 'num_edits', 'num_artists'], js['info'])
【问题讨论】:
-
能否包含存根数据文件以便我们运行示例代码?
-
如果您可以修改代码以在其中包含可直接访问且不需要单独的数据文件的示例数据,那就更好了...
-
没关系...我已经使用您提供的数据对其进行了存根。