I need to convert a dataframe to a nested jsonl file in a specific way. I have the dataframe below and I constructed the column "quantity details" myself which means it was 2 saperate columns before.
id price quantity details
0 12 11.00 "quantity" : 4.0, "locationId" : 1234567
1 34 22.00 "quantity" : 7.0, "locationId" : 1234567
2 56 33.00 "quantity" : 13.0, "locationId" : 1234567
3 78 44.00 "quantity" : 2.0, "locationId" : 1234567
4 90 55.00 "quantity" : 3.0, "locationId" : 1234567
I used the code below to add "input" to the front while converting it to jsonl, thanks to this thread How to turn a dataframe to jsonl with similar index for every line?.
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")
The jsonl file i get:
{"input":{"id": "12", "price": 11, "quantity details": ""availableQuantity": 23.0, "locationId": 1234567"}}
{"input":{"id": "34", "price": 22, "quantity details": ""availableQuantity": 15.0, "locationId": 1234567"}}
{"input":{"id": "56", "price": 33, "quantity details": ""availableQuantity": 23.0, "locationId": 1234567"}}
{"input":{"id": "78", "price": 44, "quantity details": ""availableQuantity": 14.0, "locationId": 1234567"}}
{"input":{"id": "90", "price": 55, "quantity details": ""availableQuantity": 10.0, "locationId": 1234567"}}
This is the desired output for the jsonl file:
{"input":{"id": "12", "price": 11, "quantity details": {"availableQuantity": 23.0, "locationId": 1234567}}}
{"input":{"id": "34", "price": 22, "quantity details": {"availableQuantity": 15.0, "locationId": 1234567}}}
{"input":{"id": "56", "price": 33, "quantity details": {"availableQuantity": 23.0, "locationId": 1234567}}}
{"input":{"id": "78", "price": 44, "quantity details": {"availableQuantity": 14.0, "locationId": 1234567}}}
{"input":{"id": "90", "price": 55, "quantity details": {"availableQuantity": 10.0, "locationId": 1234567}}}
Any help is greatly appreciated. Thank you for reading this