如何根据匹配条件计算差异

数据挖掘 熊猫
2022-03-07 11:08:08

图片

您好,我正在尝试从 excel 转移到 pandas。

我想添加名为“daily_volume”的新列,如果“project_name”等于上面的行 project_name,则计算差异。

例如,1,424.53 - 1,343.68 = 80.85

我的目标是在 $LONDON Gift 的新创建的“daily_volume”列下的第 2 行中看到 80.85。

基本上,项目名称的第一行总是空白的。

1个回答

如果我明白了,我们的想法是计算当前total_volume与其紧接下方之间的差异,同时考虑到project_name,对吧?您可以按project_name列对数据框进行分组,total_volume然后选择您可以使用.diff()的方法,此方法可以进行您需要的操作。

  1. 我将使用以下示例数据:
日期 总容积 项目名
0 2021-08-26 1343.68 $伦敦礼物
1 2021-08-26 1424.53 $伦敦礼物
2 2021-08-26 1800.10 $伦敦礼物
3 2021-08-26 2345.23 $ GROUP_2
4 2021-08-26 2500.45 $ GROUP_2
5 2021-08-26 2567.76 $ GROUP_3

您可以观察到有 3 个不同的组$LONDON Gift$GROUP_2$GROUP_3

  1. 我们创建新列daily_volume如下:

    df['daily_volume'] = df.groupby('project_name')['total_volume'].diff()
    

输出:

日期 总容积 项目名 每日交易量
0 2021-08-26 1343.68 $伦敦礼物
1 2021-08-26 1424.53 $伦敦礼物 80.85
2 2021-08-26 1800.10 $伦敦礼物 375.57
3 2021-08-26 2345.23 $ GROUP_2
4 2021-08-26 2500.45 $ GROUP_2 155.22
5 2021-08-26 2567.76 $ GROUP_3

最后的建议:避免使用图像作为数据,将您的代码放在问题中,例如:pd.DataFrame({...}).