【问题标题】:Determine the number of unique values between consecutive rows确定连续行之间唯一值的数量
【发布时间】:2017-09-05 07:30:26
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 您的预期输出是什么?从你的问题看不清楚。
  • 你能关闭你的previous question吗?如果其中一个答案有帮助,请将其标记为已接受。
  • 你的例子不清楚,为什么预期的数字是2?
  • 对不起。问这个不清楚的问题是我的错。
  • 我可以解释一下我的例子。如果在 [A] 行中是 12,22,5,7;在 B 行是 22,7,3,6,那么数字是 2。因为在 row[a] 和 rwo[b] 我们有 22 和 7。在 b 行我们有两个新的数字 3,6。所以我们最后在“b”行添加一个数字,记录a行和b行之间的差异。谢谢。

标签: python pandas dataframe unique


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2017-11-07
    • 2011-12-19
    • 2022-08-07
    • 1970-01-01
    相关资源
    最近更新 更多