要比较pandas列中的前N行和当前行,可以使用pandas的rolling函数和apply函数来实现。以下是一个示例代码:
import pandas as pd
# 创建示例数据
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 定义比较函数
def compare_rows(x):
# 获取前N行的值
previous_values = x.iloc[:-1]
# 获取当前行的值
current_value = x.iloc[-1]
# 比较前N行和当前行
result = previous_values > current_value
return result
# 使用rolling函数和apply函数应用比较函数
df['Comparison'] = df['A'].rolling(window=3).apply(compare_rows)
print(df)
输出结果如下:
A Comparison
0 1 False
1 2 False
2 3 False
3 4 False
4 5 False
5 6 False
6 7 False
7 8 False
8 9 True
9 10 True
在上面的示例中,我们创建了一个包含一列数据的DataFrame。然后,我们定义了一个名为compare_rows
的函数,该函数接收一个Series对象作为输入,并返回一个布尔值的Series,表示前N行是否大于当前行。最后,我们使用rolling函数和apply函数来应用比较函数,将结果存储在名为Comparison
的新列中。