使用JSON将JSONL键扩展为列

时间:2019-03-19 04:36:44

标签: python json pandas

我正在尝试使用Python的熊猫读取jsonl文件,但不知道如何处理作为json的键。

我正在做的是:

pd.read_json('jsonfile', lines=True)

我得到类似的东西:

ID  COL1    COL2    COL3
0   12047   93947   {'A': '001', 'B': '"002"'}
1   83621   24013   {'H': '101', 'J': 'TTA', 'K': 'TTB'}

也就是说,COL3中的条目是可以具有不同键的json。

如何转换列中COL3中的键?由于某些行将没有新生成的列的值,因此理想情况下,我希望将其设置为:

ID  COL1    COL2    A      B       H    J      K
0   12047   93947  '001'  '"002"'  NA   NA     NA
1   83621   24013   NA     NA     '101' 'TTA' 'TTB'

1 个答案:

答案 0 :(得分:2)

您可以使用:

df=df.join(df.pop('COL3').apply(pd.Series))
print(df)

或者:

#i think this should be faster
df=df.join(pd.DataFrame(df.pop('COL3').values.tolist(), index=df.index))
print(df)

  ID   COL1   COL2    A      B    H    J    K
0  0   12047  93947  001  "002"  NaN  NaN  NaN
1  1   83621  24013  NaN  NaN    101  TTA  TTB

如果COL3不是实际的字典,则应首先通过以下方式将其转换为字典:

df.COL3=df.COL3.apply(ast.literal_eval)