Python 3.x Python错误:序列的真值在if语句中不明确

Python 3.x Python错误:序列的真值在if语句中不明确,python-3.x,pandas,for-loop,if-statement,Python 3.x,Pandas,For Loop,If Statement,我有一个关于每天比较两个数据帧的值的问题。 数据帧包含df1=每天最低温度值和df2=每天最高温度值 dfs如下所示(TS_TIMESTAMP是索引列): df1: df2: 我想用一个函数计算每天的最大值和最小值之间的差值(只需使用多个不同的文件运行计算) 这就是我想到的: def temp_diff (df1, df2): for row in df1, df2: if df1.Date == df2.Date: print (df2.TREN

我有一个关于每天比较两个数据帧的值的问题。 数据帧包含df1=每天最低温度值和df2=每天最高温度值

dfs如下所示(TS_TIMESTAMP是索引列):

df1:

df2:

我想用一个函数计算每天的最大值和最小值之间的差值(只需使用多个不同的文件运行计算)

这就是我想到的:

def temp_diff (df1, df2):
    for row in df1, df2:
        if df1.Date == df2.Date:
            print (df2.TREND_VALUE - df1.TREND_VALUE)
如果运行此函数,则会收到if语句的以下错误消息: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

我不知道如何适当地更改def


谢谢你的帮助

假设数据帧中的行数相同,只需减去两列:

df1.TREND_VALUE - df2.TREND_VALUE

假设您使用的是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
         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
编辑 也许这就是你要找的

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)
输出:

0   -11
1   -11
2   -13
Name: Values, dtype: int64
         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

非常感谢。您的代码示例非常有用!我支持你的第一个选择!