首页 > 解决方案 > 仅比较数据框中的两行

问题描述

我有一个带有 focus_duration 列的数据框,我想逐对比较这个数据,即第 0 行和第 1 行、第 2 和第 3 行、第 4 和第 5 行等。如果第一个整数大于第二个整数,请在其中写入 1一个新的列。如果小于,则写入-1,如果相等则为0。我尝试创建一个列表并将一个元素与下一个元素进行比较。但是通过这种方式,它将元素二与元素三和元素三与元素四进行比较,这是我不想要的。

a = df['focus_duration'].tolist()
b = []

for i in range(0, (len(a)-1)):
    if a[i] < a[i+1]:
        b.append(0)
    elif a[i] > a[i+1]:
        b.append(1)

标签: pythonlistdataframecompare

解决方案


如果您的行数是奇数还是偶数,您需要检查条件。我正在为您自己的代码添加一个条件。此外,例如,当您使用range(3)它时,它会从 0 迭代到 2。

a = df['focus_duration'].tolist()
b = []

for i in range(len(a)):
    if i%2 == 0:
        if a[i] < a[i+1]:
            b.append(0)
        elif a[i] > a[i+1]:
            b.append(1)
    else:
        if a[i] < a[i-1]:
            b.append(0)
        elif a[i] > a[i-1]:
            b.append(1)

此代码比较零与一、一与零、二与三、三与二,依此类推。


推荐阅读