如何添加保存在 .json 文件中的两个日期?
How do i add two dates that are saved in .json files?
我很难将保存在两个单独 json 文件中的两个日期相加。我想将保存在单独库中的设置日期一起添加。
第一个文件 (A1.json) 包含:{"expires": "2019-09-11"}
第二个文件 (Whitelist.json) 包含:{"expires": "0000-01-00"}
这些日期是使用 tkcalendar 创建的,稍后会导出到这些单独的文件中,我的想法是将它们相加可以让我设置一个未来一个月的时间日期。但是,如果没有某种形式的错误,我似乎无法将它们加在一起。
我试过将 json 文件转换为 python 中的字符串,然后添加它们并使用 striptime 命令对日期求和。
这里是相关的代码块:
{with open('A1.json') as f:
data=json.loads(f.read())
for material in data.items():
A1 = (format(material[1]['expires']))
with open('Whitelist.json') as f:
data=json.loads(f.read())
for material in data.items():
A2 = (format(material[1]['expires']))
print(A1+A2)}
用这个的时候,就是一个接一个地粘贴。他们没有按照我需要的方式求和。
我也试过下面的代码:
{t1 = dt.datetime.strptime('A1', '%d-%m-%Y')
t2 = dt.datetime.strptime('Whitelist', '%d-%m-%Y')
time_zero = dt.datetime.strptime('00:00:00', '%d/%m/%Y')
print((t1 - time_zero + Whitelist).time())}
然而,这不断给出ValueError: time data does not match format '%y:%m:%d'.
我期望的是 2019-09-11 和 0000-01-00 的结果之和是 2019-10-11。但是,结果是 2019-09-110000-01-00。尝试 strptime 方法会给出 ValueErrors,例如:ValueError: time data does not match format '%y:%m:%d'.
提前谢谢你,如果我第一次做错了,我深表歉意post。
使用pandas
:
- 未提供
json
文件的实际格式,因此请使用类似以下的内容将数据导入 DataFrame
:
pd.read_json('A1.json', orient='records')
: 参数将取决于文件的格式
json_normalize
d2
不是正确的 datetime
格式,所以不要尝试转换它。
- 下面的
Code
部分将使用 dict
来设置 DataFrame
示例。
json
个文件到 DataFrames
:
df1 = pd.read_json('A1.json', orient='records')
df2 = pd.read_json('Whitelist.json', orient='records')
df = pd.DataFrame()
df['expires'] = df1.expires
df['d2'] = df2.expires
代码:
import pandas as pd
df = pd.DataFrame({"expires": ["2019-09-11", "2019-10-11", "2019-11-11"],
"d2": ["0000-01-00", "0000-02-00", "0000-03-00"]})
使用 str.split
扩展 d2
:
df.expires = pd.to_datetime(df.expires)
df[['y', 'm', 'd']] = df.d2.str.split('-', expand=True)
使用pd.DateOffset
:
df['expires_new'] = df[['expires', 'm']].apply(lambda x: x[0] + pd.DateOffset(months=int(x[1])), axis=1)
- 如果
d2
预计不仅仅是一个新的 m
或月份值,则可以更改 lambda
表达式以调用针对 [=32= 进行调整的函数]、m
和 d
值。
我很难将保存在两个单独 json 文件中的两个日期相加。我想将保存在单独库中的设置日期一起添加。
第一个文件 (A1.json) 包含:{"expires": "2019-09-11"}
第二个文件 (Whitelist.json) 包含:{"expires": "0000-01-00"}
这些日期是使用 tkcalendar 创建的,稍后会导出到这些单独的文件中,我的想法是将它们相加可以让我设置一个未来一个月的时间日期。但是,如果没有某种形式的错误,我似乎无法将它们加在一起。
我试过将 json 文件转换为 python 中的字符串,然后添加它们并使用 striptime 命令对日期求和。
这里是相关的代码块:
{with open('A1.json') as f:
data=json.loads(f.read())
for material in data.items():
A1 = (format(material[1]['expires']))
with open('Whitelist.json') as f:
data=json.loads(f.read())
for material in data.items():
A2 = (format(material[1]['expires']))
print(A1+A2)}
用这个的时候,就是一个接一个地粘贴。他们没有按照我需要的方式求和。
我也试过下面的代码:
{t1 = dt.datetime.strptime('A1', '%d-%m-%Y')
t2 = dt.datetime.strptime('Whitelist', '%d-%m-%Y')
time_zero = dt.datetime.strptime('00:00:00', '%d/%m/%Y')
print((t1 - time_zero + Whitelist).time())}
然而,这不断给出ValueError: time data does not match format '%y:%m:%d'.
我期望的是 2019-09-11 和 0000-01-00 的结果之和是 2019-10-11。但是,结果是 2019-09-110000-01-00。尝试 strptime 方法会给出 ValueErrors,例如:ValueError: time data does not match format '%y:%m:%d'.
提前谢谢你,如果我第一次做错了,我深表歉意post。
使用pandas
:
- 未提供
json
文件的实际格式,因此请使用类似以下的内容将数据导入DataFrame
:pd.read_json('A1.json', orient='records')
: 参数将取决于文件的格式json_normalize
d2
不是正确的datetime
格式,所以不要尝试转换它。- 下面的
Code
部分将使用dict
来设置DataFrame
示例。
json
个文件到 DataFrames
:
df1 = pd.read_json('A1.json', orient='records')
df2 = pd.read_json('Whitelist.json', orient='records')
df = pd.DataFrame()
df['expires'] = df1.expires
df['d2'] = df2.expires
代码:
import pandas as pd
df = pd.DataFrame({"expires": ["2019-09-11", "2019-10-11", "2019-11-11"],
"d2": ["0000-01-00", "0000-02-00", "0000-03-00"]})
使用 str.split
扩展 d2
:
df.expires = pd.to_datetime(df.expires)
df[['y', 'm', 'd']] = df.d2.str.split('-', expand=True)
使用pd.DateOffset
:
df['expires_new'] = df[['expires', 'm']].apply(lambda x: x[0] + pd.DateOffset(months=int(x[1])), axis=1)
- 如果
d2
预计不仅仅是一个新的m
或月份值,则可以更改lambda
表达式以调用针对 [=32= 进行调整的函数]、m
和d
值。