我有一个数据集,其中显示了按月(月)收集的项目(AMT)的数量。
我知道如何创建一个新列来计算两个垂直列之间的差值,即new column = Amount -2。
我不知道如何创建一个函数来计算一列,当两个月的值是垂直的时候,“差”,例如: Feb - Jan将是11-10 = 1。
在excel中,您可以创建一个指向单元格的公式来获得第一个值,然后将其偏移一行以获得第二个值。
然而,我不知道pandas python的偏移量函数,或者用垂直方式的数据计算偏移量的其他方法?
Month Amt Difference
Jan 10 0 (as there is no previous month to compare it with)
Feb 11 1
Mar 15 4
Apr 12 -3
May 17
Jun 10
Jul 30
Aug 31
Sep 32
Oct 10
Nov 25
Dec 30发布于 2015-05-13 12:40:57
一种方法是利用索引,从前一个索引中定位Amt值并减去它们,如下所示:
df['Diff'] = [df.loc[x, "Amt"] - df.loc[x-1 if x>0 else 0, "Amt"]
for x in df.index]
In [98]: df
Out[98]:
Month Amt Diff
0 Jan 10 0
1 Feb 11 1
2 Mar 15 4
3 Apr 12 -3
4 May 17 5
5 Jun 10 -7
6 Jul 30 20
7 Aug 31 1
8 Sep 32 1
9 Oct 10 -22
10 Nov 25 15
11 Dec 30 5要扩展上面的内容,您可以从Month构建df的索引,该索引将是字符串列表,然后通过枚举索引进行定位,即:
df = df.set_index('Month')
idx = df.index
df['Diff'] = [df.loc[x, "Amt"] - df.loc[idx[i-1] if i>0 else idx[0], "Amt"]
for i, x in enumerate(idx)]其思想是将索引放在手边,定位列并获取其索引,然后根据前一索引(如果不是第一列)计算差值。
发布于 2015-05-13 13:15:48
您可以使用pandas中的.diff()函数一步完成此操作。假设df是您的熊猫数据帧:
>> df['Diff'] = df['Amt'].diff().fillna(0)
>> print df
Month Amt Diff
0 Jan 10 0
1 Feb 11 1
2 Mar 15 4
3 Apr 12 -3
4 May 17 5
5 Jun 10 -7
6 Jul 30 20
7 Aug 31 1
8 Sep 32 1
9 Oct 10 -22
10 Nov 25 15
11 Dec 30 5https://stackoverflow.com/questions/30205715
复制相似问题