我正在判断两个值之间的差值是否为0.5,AND如果它们发生在不同的日期,则这是一个标志.
样本数据:
df = pd.DataFrame({'date1' : ['2023-05-11', '2023-02-24', '2023-07-9', '2023-01-19', '2023-02-10'],
'date2' : ['2023-05-11', '2023-02-24', '2023-07-8', '2023-01-17', '2023-02-10'],
'value1' : [9.11, .12, 49.1, 2.25, 6.22],
'value2' : [2.12, .86, 0.03, .17, 4.71]})
df
date1 date2 value1 value2
0 2023-05-11 2023-05-11 9.11 2.12
1 2023-02-24 2023-02-24 0.12 0.86
2 2023-07-09 2023-07-08 49.1 0.03
3 2023-01-19 2023-01-17 2.25 0.17
4 2023-02-10 2023-02-10 6.22 4.71
df['date1'] = pd.to_datetime(df['date1'])
df['date2'] = pd.to_datetime(df['date2'])
当我try 使用apply
函数时:
df.apply(lambda x : 'yes' if (abs(x['value1'] - x['value2']) > .5) & (x['date1'].date != x['date2'].date) else 'no', axis = 1)
0 yes
1 yes
2 yes
3 yes
4 yes
dtype: object
如果没有apply
功能:
(abs(df['value1'] - df['value2']) > .5) & (df['date1'].dt.date != df['date2'].dt.date)
0 False
1 False
2 True
3 True
4 False
dtype: bool
正如我们在上面看到的,没有apply
函数的直接方法给出的是预期的输出,而应用函数不是.你能告诉我为什么会这样吗?