我有以下dataframe
有4列,
cluster_a cluster_b cluster_c cluster_d
-1 1 10 -1
-1 3 9 -1
1 1 3 4
1 1 3 4
2 2 9 9
2 2 9 9
表示值为>的行-1
的{{1}},我想将cluster_a
或-1
或cluster_b
的列值设置为cluster_c
,如果这些行没有来自cluster_d
== cluster_a
的行中任何这些列的相同值。但是,如果这些行可以在-1
== cluster_a
的行中找到相应的值,则保持列值不变。
具有相同-1
值的行,其余列的值也相同。
所以结果cluster_a
看起来像,
df
这里的行
cluster_a cluster_b cluster_c cluster_d
-1 1 10 -1
-1 3 9 -1
1 1 -1 -1
1 1 -1 -1
2 -1 9 -1
2 -1 9 -1
具有相同的cluster_a值,此值为> -1,我们将它们视为同一组(代码中为 1 1 3 4
1 1 3 4
),因为它们的id_rows
值与cluster_b
中的第1行相同,
df
他们的 -1 1 10 -1
不会设为cluster_b
。
但是,-1
和cluster_c
不是这样,因为cluster_d
和cluster_c
在cluster_d
==的行中找不到相同的值cluster_a
,
-1
以上两行 -1 1 10 -1
-1 3 9 -1
== cluster_a
因此
1
这是我的代码,
1 1 -1 -1
1 1 -1 -1
我想知道是否有更简洁/有效的方法来做到这一点。