【问题标题】:To check if the continuity of dates are missing in a column检查列中是否缺少日期的连续性
【发布时间】:2020-02-20 19:26:48
【问题描述】:

我想检查我的数据框列,如果某个月份缺少日期,那么代码应该以 MMM-YYYY 格式输出下个月

数据集如下所示:

                date_start_balance  date_end_balance    start_balance
                22.02.16            22.03.16             3590838
                22.04.16            22.05.16             69788
                15.06.16            21.07.16             452165

两个日期列都是日期时间格式。现在在上面的数据集中,开始列中缺少 3 月和 5 月的日期,这应该返回为 MMM-YYYYY

我已经尝试了以下代码:

import datetime
dates = df1['date_start_balance'].tolist()
missing = []
for i in range(0,len(dates)-1):
   if dates[i+1].month - dates[i+1].month != 1:
    for j in range(dates[i].month+1,dates[i+1].month):
        missing.append(datetime(dates[i].year, j,1))
print(missing)

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    你可以先用pd.date_range创建一个日期范围

    march = pd.date_range(start='2016-05-01', end='2016-05-31')
    

    然后您将获得包含您已经拥有的日期的列表,在示例中只有一个日期:2016-05-15:

    your_list = [datetime.datetime.strptime('15052016', "%d%m%Y").date()]
    

    然后您可以计算范围和列表之间的差异并获取您缺少的日期:

    march.difference(your_list)
    
    DatetimeIndex(['2016-05-01', '2016-05-02', '2016-05-03', '2016-05-04',
                   '2016-05-05', '2016-05-06', '2016-05-07', '2016-05-08',
                   '2016-05-09', '2016-05-10', '2016-05-11', '2016-05-12',
                   '2016-05-13', '2016-05-14', '2016-05-16', '2016-05-17',
                   '2016-05-18', '2016-05-19', '2016-05-20', '2016-05-21',
                   '2016-05-22', '2016-05-23', '2016-05-24', '2016-05-25',
                   '2016-05-26', '2016-05-27', '2016-05-28', '2016-05-29',
                   '2016-05-30', '2016-05-31'],
                  dtype='datetime64[ns]', freq=None)
    

    【讨论】:

    • 但是我有很多数据,我想使用 col 名称而不是传递硬编码的日期。在这种情况下有什么解决方案?
    • 如果您不想硬编码日期范围,您可以从列表中选择最小值和最大值。如果它是您已经拥有的值,那么您可以从开始日期列中获得唯一值。
    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2021-01-04
    • 2019-10-31
    • 2017-05-31
    • 2021-03-06
    相关资源
    最近更新 更多