Pandas 日期 - 将星期一与同一周的其他日子配对

Pandas dates - pairing Mondays with other days from the same week

我有一个日期为星期一或星期二的数据框,还有另一个日期为星期一、星期二和星期三的数据框。我想将第二个数据框中的每个日期与同一周第一个数据框中的星期一或星期二相匹配:

import pandas as pd

df1 = pd.DataFrame(['01-25-2022','01-17-2022'])
df2 = pd.DataFrame(['01-26-2022','01-27-2022','01-20-2022'])

所以在那个例子中,我想要第三个数据帧作为输出,它结合了 df1 和 df2:

df3 = pd.DataFrame([['01-25-2022','01-25-2022','01-17-2022'],['01-26-2022','01-27-2022','01-20-2022']]).T

您可以使用 .dt.to_period('W') (by default .dt.to_period('W-SUN') for Sunday as last week day:

获取星期 (Mon-Sun)
df1 = pd.DataFrame({'A': ['01-25-2022','01-17-2022']},
                    dtype='datetime64[s]')
df2 = pd.DataFrame({'B': ['01-26-2022','01-27-2022','01-20-2022']},
                    dtype='datetime64[s]')

df1.merge(df2,
          left_on=df1['A'].dt.to_period('W'),
          right_on=df2['B'].dt.to_period('W'),
          how='right'
         ).drop(columns='key_0')

输出:

           A          B
0 2022-01-25 2022-01-26
1 2022-01-25 2022-01-27
2 2022-01-17 2022-01-20