如何将数据框转换为每行具有相似索引的 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}}
我有 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}}