所有月份結(jié)束,直到結(jié)束日期

我有一個帶有兩列的df:

index   start_date   end_date
0       2000-01-03   2000-01-20
1       2000-01-04   2000-01-31
2       2000-01-05   2000-02-02 
3       2000-01-05   2000-02-17
...
5100    2020-12-29   2021-01-11
5111    2020-12-30   2021-03-15  

我想在開始日期和結(jié)束日期之間添加所有月結(jié)束日期的列,這樣如果end_date在一個月中間,我仍然會考慮到本月底。所以,我的df看起來像這樣:

index   start_date   end_date     first_monthend   second_monthend third_monthend fourth_monthend
0       2000-01-03   2000-01-20   2000-01-31         0               0              0
1       2000-01-04   2000-01-31   2000-01-31         0               0              0
2       2000-01-05   2000-02-02   2000-01-31         2000-02-28      0              0
3       2000-01-05   2000-02-17   2000-01-31         2000-02-28      0              0
... ... ... ... ... ...
5100    2020-12-29   2021-02-11   2020-12-31         2021-01-31      2021-02-28     0
5111    2020-12-30   2021-03-15   2020-12-31         2021-01-31      2021-02-28    2021-03-31 
I would be very grateful if you could help me 
? 最佳回答:

如果需要解析開始和結(jié)束日期時間之間的月份,并添加每個月的最后一天,請使用帶有period_range的自定義lambda函數(shù):

df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = pd.to_datetime(df['end_date'])

def f(x):
    r = pd.period_range(x['start_date'], 
                        x['end_date'], freq='m').to_timestamp(how='end').normalize()
    return pd.Series(r)


df = df.join(df.apply(f, axis=1).fillna(0).add_suffix('_monthend'))
print (df)
     start_date   end_date 0_monthend           1_monthend  \
0    2000-01-03 2000-01-20 2000-01-31                    0   
1    2000-01-04 2000-01-31 2000-01-31                    0   
2    2000-01-05 2000-02-02 2000-01-31  2000-02-29 00:00:00   
3    2000-01-05 2000-02-17 2000-01-31  2000-02-29 00:00:00   
5100 2020-12-29 2021-01-11 2020-12-31  2021-01-31 00:00:00   
5111 2020-12-30 2021-03-15 2020-12-31  2021-01-31 00:00:00   

               2_monthend           3_monthend  
0                       0                    0  
1                       0                    0  
2                       0                    0  
3                       0                    0  
5100                    0                    0  
5111  2021-02-28 00:00:00  2021-03-31 00:00:00  

如果不使用0替換缺少的值:

df = df.join(df.apply(f, axis=1).add_suffix('_monthend'))
print (df)
     start_date   end_date 0_monthend 1_monthend 2_monthend 3_monthend
0    2000-01-03 2000-01-20 2000-01-31        NaT        NaT        NaT
1    2000-01-04 2000-01-31 2000-01-31        NaT        NaT        NaT
2    2000-01-05 2000-02-02 2000-01-31 2000-02-29        NaT        NaT
3    2000-01-05 2000-02-17 2000-01-31 2000-02-29        NaT        NaT
5100 2020-12-29 2021-01-11 2020-12-31 2021-01-31        NaT        NaT
5111 2020-12-30 2021-03-15 2020-12-31 2021-01-31 2021-02-28 2021-03-31
主站蜘蛛池模板: 日韩精品人妻一区二区中文八零 | 日本人真淫视频一区二区三区| 国产一区在线视频观看| 亚洲av无码一区二区三区观看| 69久久精品无码一区二区| 爆乳熟妇一区二区三区| 国产乱码一区二区三区| 国模精品一区二区三区| 精品视频一区二区| 国产手机精品一区二区| 中文字幕AV一区二区三区| 亚洲av鲁丝一区二区三区| 亚洲一区二区三区乱码A| 日韩精品人妻一区二区三区四区| 午夜影视日本亚洲欧洲精品一区| 国产在线观看一区二区三区精品 | 国产成人一区二区三区精品久久 | 精品一区二区三区无码视频| 国产成人综合一区精品| 无码国产精品久久一区免费| 亚洲av无码一区二区三区在线播放 | 国产日韩综合一区二区性色AV| 老熟妇仑乱一区二区视頻| 亚洲AV无码一区二区三区DV| 久久青草国产精品一区| 日韩精品无码中文字幕一区二区| 一区二区视频在线免费观看| 国内精品视频一区二区三区八戒 | 日本一区二区三区免费高清| 丰满爆乳无码一区二区三区| 日韩一区二区免费视频| 亚洲AV无码国产精品永久一区| 亚洲综合一区无码精品| 日韩美女视频一区| 一区二区视频在线免费观看| 国产av天堂一区二区三区| 中文字幕aⅴ人妻一区二区 | 国产精品一区二区久久乐下载| 国内精品视频一区二区三区| 国产一区美女视频| 久久精品人妻一区二区三区|