Pandas中对重采样后的数据使用to_json如何保留列名?
Pandas将时间索引JSON转换为指定数组格式的解决方案
嘿,我来帮你搞定这个格式转换的问题!你现在通过resample得到的Series转成JSON后是键为时间戳的对象,但想要的是每个元素包含time和amount字段的对象数组对吧?这里有两种实用的方法:
方法一:直接在Pandas中生成目标格式(推荐)
这种方法不需要额外处理JSON字符串,直接在Pandas里把数据结构调整好再转JSON,效率更高:
# 先执行resample操作得到带时间索引的Series amount_series = df['amount'].resample('M').last() # 将Series转为DataFrame,把时间索引转为普通列,并重命名列名 amount_df = amount_series.reset_index().rename(columns={'index': 'time', 'amount': 'amount'}) # 用orient='records'参数生成指定格式的JSON amount_json = amount_df.to_json(orient='records')
关键说明:
reset_index():把原来的时间索引从索引位置转为普通列,默认列名为indexrename():把索引列重命名为你需要的time,保持amount列名不变orient='records':这个参数会让Pandas将每行数据转为一个对象,最终输出对象数组的JSON格式,正好匹配你的需求
方法二:处理已生成的JSON字符串
如果你已经拿到了原始的JSON字符串,也可以用Python的json模块来转换:
import json # 原始的JSON字符串 original_json = '{"1501459200000":1.79,"1504137600000":88.80}' # 解析为Python字典 data_dict = json.loads(original_json) # 转换为目标格式的列表 result_list = [{"time": timestamp, "amount": value} for timestamp, value in data_dict.items()] # 再转为JSON字符串 final_json = json.dumps(result_list)
两种方法都能得到你想要的[{"time":"1501459200000","amount":1.79},{"time":"1504137600000","amount":88.80}]格式,优先推荐第一种方法哦!
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

