计算组中元素之间的差异

考虑以下类别中每个类别正好有两行的数据框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:


    a   b

0   a   3

1   b   1

2   c   5


白衣染霜花
浏览 172回答 2
2回答

繁星coding

您可以将它们分组,然后计算差异和绝对值(链):d.groupby('a').diff().abs().dropna()索引可能不完全符合要求,但是您可能会发现。

喵喵时光机

由于其中的每个类别a都恰好有2行,因此数据框可以分成两行,如下所示: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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python