每组相邻列中的连续差异

时间:2019-04-10 05:41:08

标签: python pandas list dataframe

我的文件很少。为简单起见,我在下面显示前三个组(A1,A2和A3):

Column1 Column2 Column3 
A1      45      50      
A1      70      90      
A1      100     150
A2      500     510     
A2      550     600
A3      1000    1100

我想分别获取每组与最后两列的连续差异。以及每组这些连续差异的平均值。

预期输出为:

Column1 Column2 Column3 Column4        Column5
A1      45      50      70-50 = 20
A1      70      90      100-90 = 10    15  
A1      100     150
A2      500     510     550-510 = 40
A2      550     600
A3      1000    1100

在这里,我正在将数据保存到数据框中,并试图获得预期的输出。

我的代码如下:

df[output]= ([((float(df['Column3']) - float(df['Column2'].shift(-1)))*-1)/float(len(report_map1[i]))])

我想知道他们是否是获得预期结果的简单方法?

1 个答案:

答案 0 :(得分:1)

DataFrameGroupBy.shift与减列Column3一起使用:

df['Column4'] =  df.groupby('Column1')['Column2'].shift(-1) - df['Column3']
#if necessary convert to floats
#df['Column4'] =  (df.groupby('Column1')['Column2'].shift(-1).astype(float) - 
#                  df['Column3'].astype(float))
print (df)
  Column1  Column2  Column3  Column4
0      A1       45       50     20.0
1      A1       70       90     10.0
2      A1      100      150      NaN
3      A2      500      510     40.0
4      A2      550      600      NaN
5      A3     1000     1100      NaN