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

时间:2017-09-05 07:30:27

标签: python pandas dataframe unique

我有一个数据帧。我想添加一列来计算两个相邻行之间的差值(如果序列不同,则没关系)。

例如,如果在行[A]中是12,22,5,7;在行B中是22,7,3,6,那么数字是2,等等。因为在行[a]和行[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'))

感谢。

1 个答案:

答案 0 :(得分:1)

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