如何将Pandas DataFrame均等拆分并转为无表头JSON格式?
解决Pandas DataFrame拆分并转为指定格式JSON的问题
核心方案
你可以通过两种方式实现需求:要么先将DataFrame转为无表头的一维列表集合,再拆分;要么拆分DataFrame后逐个处理为一维列表,最终组合成目标格式再转JSON。
方法一:先转列表再拆分(更简洁)
直接将整个DataFrame的列值转为一维列表,再拆分后生成JSON:
import pandas as pd import numpy as np import json # 创建示例DataFrame myDf = pd.DataFrame(['banana', 'apple', 'watermelon','grapes','cherry', 'blueberry'], columns=['fruit']) # 提取列值为一维列表 full_fruit_list = myDf['fruit'].tolist() # 均等拆分为n份(这里n=2) split_groups = np.array_split(full_fruit_list, 2) # 转换为普通Python列表(numpy数组转列表) result = [list(group) for group in split_groups] # 生成指定格式的JSON json_result = json.dumps(result, indent=4) print(json_result)
方法二:拆分DataFrame后处理(适配你的原有思路)
如果坚持先拆分DataFrame,只需修正子DataFrame的转换逻辑,直接提取列的一维列表即可:
import pandas as pd import numpy as np import json myDf = pd.DataFrame(['banana', 'apple', 'watermelon','grapes','cherry', 'blueberry'], columns=['fruit']) # 拆分DataFrame为n个子DataFrame fruitList = np.array_split(myDf, 2) result = [] for sub_df in fruitList: # 直接提取子DataFrame的'fruit'列为一维列表 sub_list = sub_df['fruit'].tolist() result.append(sub_list) # 生成JSON json_result = json.dumps(result, indent=4) print(json_result)
输出结果(与预期一致)
[ [ "banana", "apple", "watermelon" ], [ "grapes", "cherry", "blueberry" ] ]
为什么你的原有方法没得到预期结果?
你之前用json.loads(...)处理orient='values'的JSON,得到的是二维嵌套列表(比如[['banana'], ['apple']]),而需求是一维子列表。直接用df['fruit'].tolist()就能拿到一维结构,不需要额外的JSON解析步骤。
内容的提问来源于stack exchange,提问作者Dutt
相关产品推荐
相关产品推荐

