繁体   English   中英

如何比较Python中相同DataFrame的不同行

[英]How to compare different rows of the same DataFrame in Python

我想找到一种快速方法来比较每个 DataFrame 行与下一个N而不使用“for循环”(由于时间计算问题)。

这里举个例子。 我的 dataframe df是:

index | col 1 | col 2

0 c

1 a

2 b

3 b

4 c

...

我想在col 2 (第 i 行)中插入True / False ,如果在接下来的 N 之一中, col 1值与第 i 行中的值相同。

这里是 N=3 的结果。

index | col 1 | col 2

0 c False

1 a False

2 b True

3 b False

4 c True

5 a...

6 c

...

注意,我尝试使用shift创建新列并与.loc进行比较,但使用大 NI 时仍然存在计算问题

因此,python 等效项看起来像: col2[i] = col1[i] in col1[i+1:i+N+1] in a loop?

当 N 很大时,使用shift创建新列可能不起作用,也许您可以尝试使用按元素比较移位值的方法:

N = 10
v = pd.Series(False, index=df.index)
for i in range(1, N):
    v = v | (df['col 1'] == df['col 1'].shift(-i))

df['col 2'] = v

你可以试试:

N = 2
df["col_2"] = [
    df.loc[i + 1 : i + N, "col_1"].eq(x).any()
    for i, x in enumerate(df["col_1"])
]
print(df)

印刷:

   index col_1  col_2
0      0     c  False
1      1     a  False
2      2     b   True
3      3     b  False
4      4     c  False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM