Если вы используете условие all, оно будет напечатано, когда all значения в df1 ['Date'] и df2 ['Date'] равны. Если это то, что вам нужно, вы идете:
def temp_diff (df1, df2):
for row in df1, df2:
if (df1.Date == df2.Date).all():
print (df1.TREND_VALUE - df2.TREND_VALUE)
У меня такое чувство, что вы хотите перебрать каждую строку и проверить, есть ли совпадения для df1['Date']
и df2['Date']
, чтобы, если есть, вывестиразница, иначе пропустите этот ряд. Дайте мне знать в комментариях, если это то, что вы хотите, тогда я отредактирую этот ответ.
import pandas as pd
a = {'Date':['2019-04-02','2019-04-03','2019-04-04'],'Values':[8,7,4]}
b = {'Date':['2019-04-02','2019-04-03','2019-04-04'],'Values':[19,18,17]}
df_1 = pd.DataFrame(a)
df_2 = pd.DataFrame(b)
def temp_diff (df1, df2):
for row in df1, df2:
if (df1.Date == df2.Date).all():
print (df1.Values - df2.Values)
temp_diff(df_1,df_2)
Вывод:
0 -11
1 -11
2 -13
Name: Values, dtype: int64
Редактировать
Может быть, эточто вы ищете?
import pandas as pd
import numpy as np
a = {'Date':['2019-04-02','2019-04-03','2019-04-04'],'TREND_VALUE':[8,7,4]}
b = {'Date':['2019-04-02','2019-04-03','2019-04-05'],'TREND_VALUE':[19,18,17]}
df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b)
df1['T_Amplitude'] = np.where((df1['Date'] == df2['Date']),df1['TREND_VALUE']-df2['TREND_VALUE'],np.nan)
print(df_1)
Вывод:
Date TREND_VALUE T_Amplitude
0 2019-04-02 8 -11.0
1 2019-04-03 7 -11.0
2 2019-04-04 4 NaN