考虑以下类别中每个类别正好有两行的数据框a:d = pd.DataFrame({"a": ["a", "b", "c", "a", "b", "c"], "b": [1, 3, 1, 4, 2, 6]})> a b0 a 11 b 32 c 13 a 44 b 25 c 6我想计算b每个之间的绝对差异a: a b0 a 31 b 12 c 5
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
您可以将它们分组,然后计算差异和绝对值(链):
d.groupby('a').diff().abs().dropna()
索引可能不完全符合要求,但是您可能会发现。
喵喵时光机
TA贡献1846条经验 获得超7个赞
由于其中的每个类别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()
添加回答
举报
0/150
提交
取消