使用 Pandas 滚动差异

2024-05-03

您好,我正在尝试使用 Pandas 滚动函数来计算下表中的滚动差异。我正在尝试生成“每月可用项目”列中的值,但没有得到任何结果。请帮忙!

Item    Adds    Subtracts   Month   Monthly Available items
A       71       30          Jan       41
B       19        7          Jan       12
C       68       30          Jan       38
D       34       19          Jan       15
E       180      91          Jan       89
C       58       34          Feb       62
E       222      129         Feb       182
D       26       21          Feb       20
B       65       26          Feb       51
A       62       58          Feb       45

到目前为止的Python代码:

rolling_triggers['添加'].rolling(window = 2).apply(lambda x: x[1] - x[0])


如果我正确理解您的代码和注释,这将执行您想要的操作:

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

df['Month'] = pd.Categorical(df['Month'], categories = months)
df = df.sort_values(['Item', 'Month'])
df['Net_Items'] = df['Adds'] - df['Subtracts']
df['Monthly_Available_Items'] = df.groupby('Item')['Net_Items'].cumsum()
df = df.reset_index(drop = True)

它将返回:

  Item  Adds  Subtracts Month  Net_Items  Monthly_Available_Items
0    A    71         30   Jan         41                       41
1    A    62         58   Feb          4                       45
2    B    19          7   Jan         12                       12
3    B    65         26   Feb         39                       51
4    C    68         30   Jan         38                       38
5    C    58         34   Feb         24                       62
6    D    34         19   Jan         15                       15
7    D    26         21   Feb          5                       20
8    E   180         91   Jan         89                       89
9    E   222        129   Feb         93                      182

首先,将月份列转换为分类的 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Categorical.html(因为按字母顺序,十二月在一月之前,依此类推)。接下来,计算Net_Items作为之间的差异Adds and Subtracts。最后计算每个产品的累积和。

假设一月是第一个月,直觉上有 71Item A增加了 30 项,总共净增 31 项。下个月,增加了 62 项,删除了 58 项,因此净总数为 4 项,加上上个月的净项总数 41 项,总计为 45 项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Pandas 滚动差异 的相关文章

随机推荐