![](/img/trans.png)
[英]Python - compare values in a dataframe and if they are the same append the rows to a new 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.