如何在python熊猫中找到两组之间的差异?

时间:2020-02-15 16:48:59

标签: python pandas numpy dataframe

我有一个这样的数据框,

ID   total_sec   is_weekday
1      300           1
1      200           0
2      280           1
2      260           0
3      190           1
4      290           0
5      500           1
5      520           0

我想找到工作日和周末之间差异最大的ID。如果我们错过了工作日或周末的记录,则将方差计算为0。 我的预期输出将是

ID   variance
1       100
2       20
3       0
4       0
5       20

2 个答案:

答案 0 :(得分:4)

您可以这样做:

df.pivot(index="ID", columns="is_weekday", values="total_sec").diff(axis=1)[1].fillna(0)

输出:

ID
1    100.0
2     20.0
3      0.0
4      0.0
5    -20.0
Name: 1, dtype: float64

答案 1 :(得分:0)

只要可以保证每个ID包含1-2行,并且每行具有不同的'is_weekday'值,那么您实际上只需要“峰峰值”(ptp)值。如果不是,请找出如何解决['ID', 'is_weekday']上的重复项,然后使用ptp

import numpy as np

df.groupby('ID').total_sec.agg(np.ptp)

ID
1    100
2     20
3      0
4      0
5     20
Name: total_sec, dtype: int64