如何将数据帧转换为每行具有相似索引的jsonl



我有一个dataframe;输入";作为所有行的索引。成千上万。

df1 = 
index   item name   item quantity
input       apple         4
input       orange        3
input       lemon         6  

我需要将其转换为jsonl文件,如下所示。我需要它看起来像这样,因为在Shopify GraphQL管理API批量导入的要求。

{ "input": { "item name": "apple", "item quantity": "4"}}
{ "input": { "item name": "orange", "item quantity": "3"}}
{ "input": { "item name": "lemon", "item quantity": "6"}}

我可以使用df1.to_json(orient='records', lines=True)将其转换为jsonl,而不需要索引,看起来像这个

{ "item name": "apple", "item quantity": "4"}}
{ "item name": "orange", "item quantity": "3"}}
{ "item name": "lemon", "item quantity": "6"}}

但我需要添加密钥";输入";我不知道该怎么做。我是json的新手。

我也尝试了df1.to_json(orient="index"),但它给了我一个错误ValueError: DataFrame index must be unique for orient='index',指示每个索引都必须是唯一的。

感谢您的帮助。干杯

您需要的输出是:

{ "input": { "item name": "apple", "item quantity": "4"}}
{ "input": { "item name": "orange", "item quantity": "3"}}
{ "input": { "item name": "lemon", "item quantity": "6"}}

orient='index'在这种情况下不起作用,因为索引不是唯一的。上面的答案看起来很棒。您的预期输出是单独的JSON。

这是一个变通方法,根据您需要的格式,如果您需要相同的格式本身

import pandas as pd
import json
data=[['apple',4],['orange','3'],['lemon',6]]
df=pd.DataFrame(data,columns=['item name','item quantity'])
json_as_str=df.to_json(orient="index")
json_value=json.loads(json_as_str)
string_formatted=[]
for key,val in json_value.items():
string_formatted.append("{'input':%s}" %val)
with open("file_name_here.jsonl","a") as fh:
for i in string_formatted:
i=i.replace("'",'"')
fh.write(f"{i}n")

输出:

{"input":{"item name": "apple", "item quantity": 4}}
{"input":{"item name": "orange", "item quantity": 3}}
{"input":{"item name": "lemon", "item quantity": 6}}

最新更新