考虑在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
答案 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()