Я хочу отобразить строки df1 и сравнить их со значениями df2 по месяцам и дням за каждый год в df2, оставив только значения в df1, которые больше, чем в df2, для добавления в Новый столбец, «Новый». df1 и df2 имеют одинаковый размер и индексируются по месяцам и дням. что было бы лучшим способом сделать это?
df1=pd.DataFrame({'Date':['2015-01-01','2015-01-02','2015-01-03','2015-01-``04','2005-01-05'],'Values':[-5.6,-5.6,0,3.9,9.4]})
df1.Date=pd.to_datetime(df1.Date)
df1['Day']=pd.DatetimeIndex(df1['Date']).day
df1['Month']=pd.DatetimeIndex(df1['Date']).month
df1.set_index(['Month','Day'],inplace=True)
df1
df2 = pd.DataFrame({'Date':['2005-01-01','2005-01-02','2005-01-03','2005-01-``04','2005-01-05'],'Values':[-13.3,-12.2,6.7,8.8,15.5]})
df2.Date=pd.to_datetime(df1.Date)
df2['Day']=pd.DatetimeIndex(df2['Date']).day
df2['Month']=pd.DatetimeIndex(df2['Date']).month
df2.set_index(['Month','Day'],inplace=True)
df2
df1 и df2
df2['New']=df2[df2['Values']<df1['Values']]
дает ValueError: Can only compare identically-labeled Series objects
Я также пробовал df2['New']=df2[df2['Values'].apply(lambda x: x < df1['Values'].values)]