Pandas 如何根据熊猫中的条件获取联接?

Pandas 如何根据熊猫中的条件获取联接?,pandas,Pandas,我有下面的示例数据框 df1 另外,另一个df包含每日数据: df2 我想通过取平均值,将df2每月数据转换为df1中的双周日期格式。例如,如果df1的日期为2003年6月15日,则其应获得2003年6月1日至2003年6月15日之间的平均值。有可能一个月内的每一天都不存在,但我们需要对可用的时间进行平均 date ac_pd a_1 a_2 2013-06-15 3.252 2013-06-30 1.542 2013-07-15 10.254 20

我有下面的示例数据框

df1

另外,另一个df包含每日数据:

df2

我想通过取平均值,将df2每月数据转换为df1中的双周日期格式。例如,如果df1的日期为2003年6月15日,则其应获得2003年6月1日至2003年6月15日之间的平均值。有可能一个月内的每一天都不存在,但我们需要对可用的时间进行平均

date        ac_pd   a_1    a_2
2013-06-15  3.252   
2013-06-30  1.542   
2013-07-15  10.254  
2013-07-31  16.348  
您可以与
SM
一起使用半个月结束频率,然后通过默认的左连接仅删除
NaN
s行和到
df1

df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'], dayfirst=True)

df22 = df2.resample('SM',on='date').mean().dropna(how='all')
print (df22)
               a_1     a_2    a_3      a_4
date                                      
2013-05-31  2281.0  1208.0  362.0  22995.0
2013-06-15  2470.0  1408.5  610.0  27690.0
2013-12-31  2252.0  1607.0  793.0   2180.0

df = df1.join(df22, on='date')
print (df)
        date   ac_pd     a_1     a_2    a_3      a_4
0 2013-06-15   3.252  2470.0  1408.5  610.0  27690.0
1 2013-06-30   1.542     NaN     NaN    NaN      NaN
2 2013-07-15  10.254     NaN     NaN    NaN      NaN
3 2013-07-31  16.348     NaN     NaN    NaN      NaN
date        ac_pd   a_1    a_2
2013-06-15  3.252   
2013-06-30  1.542   
2013-07-15  10.254  
2013-07-31  16.348  
df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'], dayfirst=True)

df22 = df2.resample('SM',on='date').mean().dropna(how='all')
print (df22)
               a_1     a_2    a_3      a_4
date                                      
2013-05-31  2281.0  1208.0  362.0  22995.0
2013-06-15  2470.0  1408.5  610.0  27690.0
2013-12-31  2252.0  1607.0  793.0   2180.0

df = df1.join(df22, on='date')
print (df)
        date   ac_pd     a_1     a_2    a_3      a_4
0 2013-06-15   3.252  2470.0  1408.5  610.0  27690.0
1 2013-06-30   1.542     NaN     NaN    NaN      NaN
2 2013-07-15  10.254     NaN     NaN    NaN      NaN
3 2013-07-31  16.348     NaN     NaN    NaN      NaN