在转换为具有拆分方向的 json 之前从数据框中删除索引
Posted
技术标签:
【中文标题】在转换为具有拆分方向的 json 之前从数据框中删除索引【英文标题】:Remove index from dataframe before converting to json with split orientation 【发布时间】:2017-09-22 12:19:42 【问题描述】:我正在使用以下内容将 pandas 数据帧输出到 json 对象:
df_as_json = df.to_json(orient='split')
在 json 对象中存储了多余的索引。我不想包括这些。
我试过删除它们
df_no_index = df.to_json(orient='records')
df_as_json = df_no_index.to_json(orient='split')
但是我得到了一个
AttributeError: 'str' object has no attribute 'to_json'
有没有一种快速的方法来重组数据框,使其在 .to_json(orient='split') 调用期间或之前不包含单独的索引列?
【问题讨论】:
你试过 orient='records' 这不起作用,因为to_json
不返回pandas 数据帧,因此to_json
的下一次调用不起作用。
@StevenG 是的,这会将列名作为键发送,这会将文件大小增加 30%(我不想这样做)。
【参考方案1】:
导入json模块
使用to_json(orient='split')
转换为json
使用json
模块将该字符串加载到字典中
用del json_dict['index']
删除index
键
使用json.dump
或json.dumps
将字典转换回json
演示
import json
df = pd.DataFrame([[1, 2], [3, 4]], ['x', 'y'], ['a', 'b'])
json_dict = json.loads(df.to_json(orient='split'))
del json_dict['index']
json.dumps(json_dict)
'"columns": ["a", "b"], "data": [[1, 2], [3, 4]]'
【讨论】:
或者,从字典开始,即:data = df.to_dict(orient='split')
后跟 del data['index']
...【参考方案2】:
Since two years back pandas
(>= v0.23.0) 提供index
参数(仅对orient='split'
和orient='table'
有效):
df = pd.DataFrame([[1, 2], [3, 4]], ['x', 'y'], ['a', 'b'])
df.to_json(orient='split', index=True)
# '"columns":["a","b"],"index":["x","y"],"data":[[1,2],[3,4]]'
df.to_json(orient='split', index=False)
# '"columns":["a","b"],"data":[[1,2],[3,4]]'
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_json.html
【讨论】:
好的,很高兴看到pandas
解决了这个问题以上是关于在转换为具有拆分方向的 json 之前从数据框中删除索引的主要内容,如果未能解决你的问题,请参考以下文章