【问题标题】:Add rows based on column date with two column unique key - pandas使用两列唯一键添加基于列日期的行 - 熊猫
【发布时间】:2020-07-29 15:43:41
【问题描述】:

所以我有一个像这样的数据框:

Number Country StartDate EndDate
12     US      1/1/2023  12/1/2023
12     Mexico  1/1/2024  12/1/2024 

而我想做的是:

Number Country Date
12     US      1/1/2023  
12     US      2/1/2023
12     US      3/1/2023
12     US      4/1/2023
12     US      5/1/2023
12     US      6/1/2023
12     US      7/1/2023
12     US      8/1/2023
12     US      9/1/2023
12     US      10/1/2023
12     US      11/1/2023
12     US      12/1/2023
12     Mexico      1/1/2024  
12     Mexico      2/1/2024
12     Mexico      3/1/2024
12     Mexico      4/1/2024
12     Mexico      5/1/2024
12     Mexico      6/1/2024
12     Mexico      7/1/2024
12     Mexico      8/1/2024
12     Mexico      9/1/2024
12     Mexico      10/1/2024
12     Mexico      11/1/2024
12     Mexico      12/1/2024

这个问题和Adding rows for each month in a dataframe based on column date很像

但是,该问题仅说明唯一键是一列。在此示例中,唯一键是 Number 和 Country。

这是我目前正在做的事情,它只占一列“数字”,我需要同时包含数字和国家,因为它们是唯一键。

df1 = pd.concat([pd.Series(r.Number, pd.date_range(start = r.StartDate, end = r.EndDate, freq='MS')) 
                    for r in df1.itertuples()]).reset_index().drop_duplicates()

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    创建范围然后explode

    df['New']= [pd.date_range(start = x, end = y, freq='MS') for x , y in zip(df.pop('StartDate'),df.pop('EndDate'))]
    df=df.explode('New')
    Out[54]: 
       Number Country        New
    0      12      US 2023-01-01
    0      12      US 2023-02-01
    0      12      US 2023-03-01
    0      12      US 2023-04-01
    0      12      US 2023-05-01
    0      12      US 2023-06-01
    0      12      US 2023-07-01
    0      12      US 2023-08-01
    0      12      US 2023-09-01
    0      12      US 2023-10-01
    0      12      US 2023-11-01
    0      12      US 2023-12-01
    1      12  Mexico 2024-01-01
    1      12  Mexico 2024-02-01
    1      12  Mexico 2024-03-01
    1      12  Mexico 2024-04-01
    1      12  Mexico 2024-05-01
    1      12  Mexico 2024-06-01
    1      12  Mexico 2024-07-01
    1      12  Mexico 2024-08-01
    1      12  Mexico 2024-09-01
    1      12  Mexico 2024-10-01
    1      12  Mexico 2024-11-01
    1      12  Mexico 2024-12-01
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2022-08-13
      • 2020-12-01
      • 1970-01-01
      • 2018-02-18
      相关资源
      最近更新 更多