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

How to turn a dataframe to jsonl with similar index for every line?

我有 dataframe 将“输入”作为所有行的索引。成千上万。

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

我需要将其转换为如下所示的 jsonl 文件。由于 Shopify GraphQL Admin 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}}