确定连续行之间唯一值的数量
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
我有一个数据框。我想添加一列来计算相邻两行之间的差值(如果顺序不同,则无所谓)。
例如,如果行[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