我正在尝试使用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'
答案 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)