让我们考虑两个数据帧:
import numpy as np
import pandas as pd
df = pd.DataFrame([1, 2, 3, 2, 5, 4, 3, 6, 7])
check_df = pd.DataFrame([3, 2, 5, 4, 3, 6, 4, 2, 1])
如果想做以下事情:
- 如果为
df[1] > check_df[1]
、df[2] > check_df[1]
或df[3] > check_df[1]
,则我们将其赋值为df 1,否则为0 - 如果为
df[2] > check_df[2]
、df[3] > check_df[2]
或df[4] > check_df[2]
,则我们将其赋值为df 1,否则为0 - 我们将相同的算法应用于数据帧的末尾
我的原始代码如下:
df_copy = df.copy()
for i in range(len(df) - 3):
moving_df = df.iloc[i:i+3]
if (moving_df >check_df.iloc[i]).any()[0]:
df_copy.iloc[i] = 1
else:
df_copy.iloc[i] = -1
df_copy
0
0 -1
1 1
2 -1
3 1
4 1
5 -1
6 3
7 6
8 7
你能给我一个建议,如果有任何可能性,这样做没有循环?