I’m trying to convert the dates inside a JSON file to their respective quarter and year. My JSON file is formatted below:
{
"lastDate": {
"0": "11/22/2022",
"1": "10/28/2022",
"2": "10/17/2022",
"7": "07/03/2022",
"8": "07/03/2022",
"9": "06/03/2022",
"18": "05/17/2022",
"19": "05/08/2022",
"22": "02/03/2022",
"24": "02/04/2022"
}
}
The current code I’m using is an attempt of using the pandas.Series.dt.quarter as seen below:
import json
import pandas as pd
data = json.load(open("date_to_quarters.json"))
df = data['lastDate']
pd.to_datetime(df['lastDate'])
df['Quarter'] = df['Date'].dt.quarter
open("date_to_quarters.json", "w").write(
json.dumps(data, indent=4))
The issue I face is that my code isn’t comprehending the object name “lastDate”. My ideal output should have the dates ultimately replaced into their quarter, check below:
{
"lastDate": {
"0": "Q42022",
"1": "Q42022",
"2": "Q42022",
"7": "Q32022",
"8": "Q32022",
"9": "Q22022",
"18": "Q22022",
"19": "Q22022",
"22": "Q12022",
"24": "Q12022"
}
}
Advertisement
Answer
You can use this bit of code instead:
import json
import pandas as pd
data = json.load(open("date_to_quarters.json"))
# convert json to df
df = pd.DataFrame.from_dict(data, orient="columns")
# convert last date to quarter
df['lastDate'] = pd.to_datetime(df['lastDate'])
df['lastDate'] = df['lastDate'].dt.to_period('Q')
# change type of lastDate to string
df['lastDate'] = df['lastDate'].astype(str)
# write to json file
df.to_json("date_to_quarters1.json", orient="columns", indent=4)
json object is different than pd.DataFrame. You have to convert json to pd.DataFrame first using from_dict() function.