代码之家  ›  专栏  ›  技术社区  ›  koPytok

计算组中元素之间的差异

  •  1
  • koPytok  · 技术社区  · 6 年前

    考虑在 a :

    d = pd.DataFrame({"a": ["a", "b", "c", "a", "b", "c"], "b": [1, 3, 1, 4, 2, 6]})
    >   a   b
    0   a   1
    1   b   3
    2   c   1
    3   a   4
    4   b   2
    5   c   6
    

    我想计算绝对差值。 b :

        a   b
    0   a   3
    1   b   1
    2   c   5
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Jan Zeiseweis    6 年前

    您可以对它们进行分组,然后计算diff和abs(chain):

    d.groupby('a').diff().abs().dropna()
    

    索引可能与请求的不完全一样,但这一点您可能可以理解。

        2
  •  1
  •   koPytok    6 年前

    因为每个类别 a 正好有两行,数据框可以分成两行,如下所示:

    first  = d.drop_duplicates("a", keep="first")
    second = d.drop_duplicates("a", keep="last")
    

    然后合并这些并计算差异:

    merged = first.merge(second, on="a")
    (merged.b_x - merged.b_y).abs()