如何将从 JSON 文件生成的列表转换为数据框并保留所有需要的列?

我正在尝试加载一个 JSON 文件,该文件包含我的脚本所需的数据。它并不总是在 JSON 中完成,所以我以前从未加载过,所以我对正在发生的事情有点迷茫。

我遇到了一些错误,在 StackOverflow 上找到解决方案后,我现在找到了一种可以在我的 .JSON 中加载的方法:

data = [json.loads(line) for line in open('C:/filepath/data.json','r',encoding='utf8')]

#creates a list,but I need a dataframe

dataset = pd.DataFrame(data)

dataset 看起来像这样:

exp    username     email    date                        items
ema                         2_12_21_3_00_14 PM         [{'item 1': '29'},{'item 2': '19'},{'item 3': '27'},{'item 4': '24'},{'item 5': '39'},{'item 6': '40'},{'item 7': '43'},{'item 8': '19'},{'item 9': '19'},{'item 10': '22'},{'item 11': '35'},{'item 12': '33'},{'item 13': '23'},{'item 14': '27'},{'item 15': '28'},{'item 16': '23'},{'item 17': '26'},{'item 18': '30'},{'item 19': '29'},{'item 20': '31'},{'item 21': '35'},{'item 22': '29'}]

这些项目应该是单独的列,每行都有自己的数据。我不确定为什么会这样。有什么办法可以保留这些单独的列或转换此数据框以获取这些列?

一些额外信息: 我之前遇到的错误是 UnicodeDecodeError: 'charmap' codec can't decode byte 和 ```JSONDecodeError: Extra data````

那只是使用方法

File = open('data.json')
dataset = json.load(File)
#charmap issue

File = open('data.json',encoding='utf8')
dataset = json.load(File)
#extra data issue

编辑: 这是 data 在通过 pd.DataFrame

之前的样子
Type  Size    Value
dict  5       {'exp':'ema','username':'','email':'','date':'2_12_21_3_00_14 PM',...

为简单起见,我只显示第一个条目,因为我的数据超过 6,000 个条目,并且在我的脚本中打印头部变得很奇怪。

我也可以点击 Value 部分,因为它是一本字典,它会打开一个元素表,其中列名与 dataset 相同,但处于水平方向。

ding8806799 回答:如何将从 JSON 文件生成的列表转换为数据框并保留所有需要的列?

如果我理解正确:

你可以试试:

df=pd.DataFrame(data)
df=df.explode('items',ignore_index=True)
s=(pd.DataFrame(df.pop('items').tolist())
     .agg(sorted,key=pd.isnull).dropna().T
     .reset_index().rename(columns={'index':'items',0:'items value'}))
df=df.join(s)

df 的输出:

    exp     username    email   date                items   items value
0   ema     NaN         NaN     2_12_21_3_00_14 PM  item 1      29
1   ema     NaN         NaN     2_12_21_3_00_14 PM  item 2      19
2   ema     NaN         NaN     2_12_21_3_00_14 PM  item 3      27
3   ema     NaN         NaN     2_12_21_3_00_14 PM  item 4      24
4   ema     NaN         NaN     2_12_21_3_00_14 PM  item 5      39
    ...     ...         ...     ..................  ......  ..
19  ema     NaN         NaN     2_12_21_3_00_14 PM  item 20     31
20  ema     NaN         NaN     2_12_21_3_00_14 PM  item 21     35
21  ema     NaN         NaN     2_12_21_3_00_14 PM  item 22     29
本文链接:https://www.f2er.com/193.html

大家都在问