python和数据帧: group by week and calculate the sum and difference

标签 python pandas dataframe

我有一个包含以下列的数据框:

      DATE      ALFA    BETA
2016-04-26         1       3
2016-04-27         3       0
2016-04-28         0       8
2016-04-29         4       2
2016-04-30         3       1
2016-05-01        -2      -5
2016-05-02         3       0
2016-05-03         3       3
2016-05-08         1       7
2016-05-11         3       1
2016-05-12        10       1
2016-05-13         4       2

我想按周范围对数据进行分组,但以不同方式对待 alpha 和 beta 列。我想计算每周 ALFA 列中的数字总和,而对于 BETA 列,我想计算开始和结束之间的差异星期。我向您展示了预期结果的示例。

      DATE      sum_ALFA    diff_BETA
2016-04-26            12            3
2016-05-03             4            4
2016-05-11            17            1

我已经尝试过这段代码,但它计算每列的总和

df = df.resample('W', on='DATE').sum().reset_index().sort_values(by='DATE')

这是我的数据集 https://drive.google.com/uc?export=download&id=1fEqjINx9R5io7t_YxA9qShvNDxWRCUke

最佳答案

我猜我这里有不同的区域设置(因此我的一周不同),你可以这样做:

df.resample("W", on="DATE",closed="left", label="left"
            ).agg({"ALFA":"sum", "BETA": lambda g: g.iloc[0] - g.iloc[-1]})
            ALFA  BETA
DATE
2016-04-24    11     2
2016-05-01     4    -8
2016-05-08    18     5

我认为通过我的方法可以解决您的数据问题。定义

def get_series_first_minus_last(s):
    try:
        return s.iloc[0] - s.iloc[-1]
    except IndexError:
        return 0

并用函数调用替换 lambda 调用,即

df.resample("W", on="DATE",closed="left", label="left"
            ).agg({"ALFA":"sum", "BETA": get_series_first_minus_last})

请注意,在新定义的函数中,如果您愿意,也可以返回 nan。

关于python和数据帧: group by week and calculate the sum and difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59201990/

相关文章:

pandas - 条形图与groupby

python - 我想在具有增量值的数据框中添加两列

python - Pandas 数据框值相等测试

python - 我如何在 python 中创建一个 protobuf3 时间戳?

python - for循环迭代之间的延迟(python)

python - 我可以使用回归模型进行样本外预测吗?

python - 如何在python中替换NaN值

python - 如何从 3 类数据帧的前 2 类中删除 1 行?

python - Pandas:将 groupby 输出为数据框

python - 在python中合并具有不同时间频率的系列/数据帧