Python 使用熊猫滚动差异
您好,我正在尝试使用熊猫滚动函数来计算下表中的滚动差。我试图在每月可用项目列中生成值,但却一无所获。请帮忙Python 使用熊猫滚动差异,python,pandas,Python,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
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代码:
滚动触发['Adds'].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
首先,将月份列转换为a(因为按字母顺序,十二月在一月之前,等等)。接下来,计算净项目
,作为加
和减
之间的差值。最后,计算每个产品的累积总和
假设1月是第一个月,直觉是添加了71个
项目A
,删除了30个,净总数为31个。在下一个月,增加了62个,删除了58个,因此,净总数4与上一个月的净总数41相加,总共45个。您需要发布代码。这是我开始的内容,但我需要它来计算每个项目的差异。到目前为止,它看起来像是在计算所有项目。另外,我如何计算“减去”列中的值以获得每月可用项目中的值?减去滚动_触发器['Adds'].滚动(窗口=2).应用(lambda x:x[1]-x[0]),所以有两个月的窗口?如果你也有三月的数字,你只希望每月可用的项目关注二月和三月?我有一直到八月的月份,这只是数据的一个样本。@ALollz:我以前试图提取这个答案,但失败了。:-)太棒了,当延长到8月份时,这个效果非常好,谢谢!我不认为用整数来表示月份还是用分类来表示月份会有什么区别。