Python 3.x Python错误:序列的真值在if语句中不明确
我有一个关于每天比较两个数据帧的值的问题。 数据帧包含df1=每天最低温度值和df2=每天最高温度值 dfs如下所示(TS_TIMESTAMP是索引列): df1: df2: 我想用一个函数计算每天的最大值和最小值之间的差值(只需使用多个不同的文件运行计算) 这就是我想到的: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
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
非常感谢。您的代码示例非常有用!我支持你的第一个选择!