首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分嵌套的json中的数据以进行一些计算

拆分嵌套的json中的数据以进行一些计算
EN

Stack Overflow用户
提问于 2021-11-11 01:27:45
回答 1查看 24关注 0票数 0

希望有人能帮我一把。我有一个嵌套的json文件,我正在尝试计算该文件的两行之间的年龄差异,仅日期格式为mm/yyyy的start_date和end_date。所以我尝试将它拆分,这样我就可以计算end_date和start_date之间的年份差异,如果超过10年,我会添加到另一个列表中。

下面是我的代码,但它打印了一个空列表,我不知道如何修复它。如有任何提示或指示,我们将不胜感激。

哦……我必须使用默认的python库,所以即使pandas会更容易,我也不能使用它。

代码语言:javascript
复制
remove_card=[] 

def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    breakdown1 = expr1.split('/') 
    breakdown2 = expr2.split('/')
    card_month = int(breakdown1[0]) - int(breakdown2[0])
    card_year= int(breakdown1[1]) - int(breakdown2[1])
    if card_year >= 10:
        return True
    elif card_year == 10 and card_year > 0:
        return True
    else:
        return False

for line in data_json: #data_json is name of the json file. 
    if datebreakdown(data_file) == True:
        remove_card.append(data_file)
EN

回答 1

Stack Overflow用户

发布于 2021-11-11 01:37:26

我认为这些是你想要的条件:

代码语言:javascript
复制
    if card_year > 10:
        return True
    elif card_year == 10 and card_month > 0:
        return True
    else:
        return False

第一个条件应该是严格的>,而不是>=。第二个条件应该比较年份差恰好为10的月份。

另一个问题是,您正在以错误的顺序减去日期。你从开头减去结尾,所以它总是负的。所以这些减法应该是:

代码语言:javascript
复制
    card_month = int(breakdown2[1]) - int(breakdown1[0])
    card_year= int(breakdown2[1]) - int(breakdown1[1])
代码语言:javascript
复制
def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    year1, month1 = expr1.split('/') 
    year2, month2 = expr2.split('/')
    start_date = int(year1) + int(month1)/12
    end_date = int(year2) + int(month2)/12
    return end_date - start_date > 10

DEMO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69922186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档