【问题标题】:Get all dates between start and end date pandas columns获取开始日期和结束日期熊猫列之间的所有日期
【发布时间】:2021-09-14 13:18:14
【问题描述】:

我正在尝试获取两个开始和结束日期 pandas 列之间的日期列表,以及单独的 ID。我找到了一个基本上就是我所追求的答案(https://stackoverflow.com/a/53409207/14463396),但这只有在开始日期和结束日期之间的时间段不重叠时才有效,而且我似乎无法弄清楚如何适应这个/使用另一种方法来获得我想要的输出。

下面是一个示例数据框:

df = pd.DataFrame({'ID' : [1, 2, 3],
'Start Date': ["2021-06-01", "2021-06-02", "2021-06-04"],
'End Date': ["2021-06-03", "2021-06-05", "2021-06-08"]})

这就是所需的输出:

    ID  Start Date    End Date       Dates
0    1  2021-06-01  2021-06-03  2021-06-01
1    1  2021-06-01  2021-06-03  2021-06-02
2    1  2021-06-01  2021-06-03  2021-06-03
3    2  2021-06-02  2021-06-05  2021-06-02
4    2  2021-06-02  2021-06-05  2021-06-03
5    2  2021-06-02  2021-06-05  2021-06-04
6    2  2021-06-02  2021-06-05  2021-06-05
7    3  2021-06-04  2021-06-08  2021-06-04
8    3  2021-06-04  2021-06-08  2021-06-05
9    3  2021-06-04  2021-06-08  2021-06-06
10   3  2021-06-04  2021-06-08  2021-06-07
11   3  2021-06-04  2021-06-08  2021-06-08

任何帮助都非常感谢:)

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    尝试创建日期列表然后explode

    df['Start Date'] = pd.to_datetime(df['Start Date'])
    df['End Date'] = pd.to_datetime(df['End Date'])
    df['Dates'] = [pd.date_range(x, y) for x , y in zip(df['Start Date'],df['End Date'])]
    df = df.explode('Dates')
    df
    Out[108]: 
       ID Start Date   End Date      Dates
    0   1 2021-06-01 2021-06-03 2021-06-01
    0   1 2021-06-01 2021-06-03 2021-06-02
    0   1 2021-06-01 2021-06-03 2021-06-03
    1   2 2021-06-02 2021-06-05 2021-06-02
    1   2 2021-06-02 2021-06-05 2021-06-03
    1   2 2021-06-02 2021-06-05 2021-06-04
    1   2 2021-06-02 2021-06-05 2021-06-05
    2   3 2021-06-04 2021-06-08 2021-06-04
    2   3 2021-06-04 2021-06-08 2021-06-05
    2   3 2021-06-04 2021-06-08 2021-06-06
    2   3 2021-06-04 2021-06-08 2021-06-07
    2   3 2021-06-04 2021-06-08 2021-06-08
    

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多