如何将单个JSON对象读取为Pandas单行DataFrame
问题:将单个JSON对象转为Pandas单行DataFrame?
我有如下格式的JSON对象:
{ "ABC": 123, "DATE": "2020-01-01", "AMOUNT": 100, "IDENTIFIER": 12345 }
希望将其读取为Pandas的单行DataFrame,输出样式如下:
ABC DATE AMOUNT IDENTIFIER 123 2020-01-01 100 12345
目前我可以接受所有数据以字符串类型读取,后续再自行转换数据类型。我尝试过使用df=pd.read_json('file.json', orient='index'),但得到的DataFrame需要转置,且重命名列存在困难(列名为RangeIndex)。请问有没有更简洁的实现方法?
解决方法
这里有几种更简洁的实现方式,直接得到符合需求的单行DataFrame,且自动保留原JSON的键作为列名:
方法1:用pd.DataFrame.from_dict转换
先读取JSON文件为字典,再转为DataFrame,同时指定所有数据为字符串类型:
import pandas as pd import json # 读取JSON文件内容 with open('file.json', 'r') as f: data_dict = json.load(f) # 转为单行DataFrame,所有列设为字符串类型 df = pd.DataFrame.from_dict(data_dict, orient='index').T.astype(str)
方法2:结合read_json和Series.to_frame
用read_json的typ='series'参数直接读取为Series,再转成单行DataFrame:
import pandas as pd df = pd.read_json('file.json', typ='series').to_frame().T.astype(str)
方法3:直接将JSON包装为数组读取
如果不想额外处理字典,也可以把JSON对象包装成数组形式,然后直接用read_json读取:
import pandas as pd import json with open('file.json', 'r') as f: # 将单个对象转为数组 data = [json.load(f)] df = pd.DataFrame(data, dtype=str)
这几种方法都不需要手动重命名列,列名会自动对应JSON的键,且所有数据都以字符串类型存储,满足你的需求。
内容的提问来源于stack exchange,提问作者FlyingPickle
相关产品推荐
相关产品推荐

