我正在try 将JSON文件中的日期转换为它们各自的季度和年份.我的JSON文件格式如下:

{
    "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"
    }
}

我当前使用的代码是try 使用pandas.Series.dt.quarter,如下所示:

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))

我面临的问题是,我的代码不能理解对象名称"lastdate".我的理想输出应该最终将日期替换为其所在季度的日期,请判断以下内容:

{
    "lastDate": {
        "0": "Q42022",
        "1": "Q42022",
        "2": "Q42022",
        "7": "Q32022",
        "8": "Q32022",
        "9": "Q22022",
        "18": "Q22022",
        "19": "Q22022",
        "22": "Q12022",
        "24": "Q12022"
    }
}

推荐答案

您可以改用下面这段代码:

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对象与pd.DataFrame不同.您必须先使用from_dict()函数将json转换为pd.DataFrame.

Python相关问答推荐

将pandas Dataframe转换为3D numpy矩阵

NumPy中条件嵌套for循环的向量化

如何根据一列的值有条件地 Select 前N组?

Plotly Dash Creating Interactive Graph下拉列表

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

如何从比较函数生成ngroup?

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

多个矩阵的张量积

对数据帧进行分组,并按组间等概率抽样n行

遍历列表列表,然后创建数据帧

极点用特定值替换前n行

我怎样才能让深度测试在OpenGL中使用Python和PyGame呢?

关于数字S种子序列内部工作原理的困惑

了解如何让库认识到我具有所需的依赖项

如何有效地计算所有输出相对于参数的梯度?

在FastAPI/Starlette中使用WebSockets时如何运行后台任务?

如何正确设置ALLOWED_HOST以允许网络中的其他计算机访问Web

在极坐标中添加列总计行

有条件的滚动平均数(面试问题)