确定连续行之间唯一值的数量

Determine the number of unique values between consecutive rows

我有一个数据框。我想添加一列来计算相邻两行之间的差值(如果顺序不同,则无所谓)。

例如,如果行[A]中的行是12,22,5,7;在 B 行中是 22,7,3,6 那么数字是 2,etc.Because 在 row[a] 和 row[b] 中我们有相同的 22 和 7(尽管顺序不同)。在 b 行中,我们有两个新数字 3,6。所以我们最后在"b"行加一个数,记录a行和b行的差值。

df = pd.DataFrame({'X': [22, 7, 43, 44, 56,67,7,38,29,130],'Y': [5,3,330,140,250,10,207,320,420,50],'Z': [7,6,136,144,312,10,82,63,42,12],'T':[12, 22, 4, 424, 256,167,27,38,229,30]},index=list('ABCDEFGHIJ'))

谢谢。

John Galt 在他的(现已不幸删除)答案中通过 set 操作走上了正确的轨道。

此外,计算重复项将涉及:

s = df.apply(set, 1)
df['diffs'] = s.diff().fillna('').str.len() + (4 - s.str.len())
df

     T    X    Y    Z  diffs
A   12   22    5    7      0
B   22    7    3    6      2
C    4   43  330  136      4
D  424   44  140  144      4
E  256   56  250  312      4
F  167   67   10   10      4
G   27    7  207   82      4
H   38   38  320   63      4
I  229   29  420   42      4
J   30  130   50   12      4