I have a Pandas DataFrame
with two columns – one with the filename and one with the hour in which it was generated:
File Hour F1 1 F1 2 F2 1 F3 1
I am trying to convert it to a JSON file with the following format:
{"File":"F1","Hour":"1"} {"File":"F1","Hour":"2"} {"File":"F2","Hour":"1"} {"File":"F3","Hour":"1"}
When I use the command DataFrame.to_json(orient = "records")
, I get the records in the below format:
[{"File":"F1","Hour":"1"}, {"File":"F1","Hour":"2"}, {"File":"F2","Hour":"1"}, {"File":"F3","Hour":"1"}]
I'm just wondering whether there is an option to get the JSON file in the desired format. Any help would be appreciated.
To convert the object to a JSON string, then use the Pandas DataFrame. to_json() function. Pandas to_json() is an inbuilt DataFrame function that converts the object to a JSON string. To export pandas DataFrame to a JSON file, then use the to_json() function.
You can convert JSON to Pandas DataFrame by simply using read_json() . Just pass JSON string to the function. It takes multiple parameters, for our case I am using orient that specifies the format of JSON string. This function is also used to read JSON files into pandas DataFrame.
This API from Pandas helps to read JSON data and works great for already flattened data like we have in our Example 1. You can download the JSON from here.
To convert pandas DataFrame to Dictionary object, use to_dict() method, this takes orient as dict by default which returns the DataFrame in format {column -> {index -> value}} . When no orient is specified, to_dict() returns in this format.
The output that you get after DF.to_json
is a string
. So, you can simply slice it according to your requirement and remove the commas from it too.
out = df.to_json(orient='records')[1:-1].replace('},{', '} {')
To write the output to a text file, you could do:
with open('file_name.txt', 'w') as f: f.write(out)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With