我的文件只有几列。为简单起见,我在下面显示前三组(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]))])
我想知道他们是否有更简单的方法来获得预期的结果?
最佳答案
使用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
关于python - 每组相邻列内的连续差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605420/