计算组中元素之间的差异

时间:2018-06-22 08:37:44

标签: python pandas pandas-groupby

考虑在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

我想计算ba之间的绝对差:

    a   b
0   a   3
1   b   1
2   c   5

2 个答案:

答案 0 :(得分:2)

您可以将它们分组,然后计算差异和绝对值(链):

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

索引可能不完全符合要求,但您可能会发现。

答案 1 :(得分:1)

由于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()