我的文件很少。为简单起见,我在下面显示前三个组(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]))])
我想知道他们是否是获得预期结果的简单方法?
答案 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