>我有一个单行长的数据帧计数的结果,如下所示:
Users Address Email Phone Work
552 343 207 117 57
我想在每列之间插入第二列与上一列之间的差异,以便我得到:
Users DiffAdd Address DiffEmail Email DiffPhone Phone DiffWork Work
552 -209 343 -136 207 -90 117 -60 57
或者,如果可能的话,我会简单地将每列的值替换为其相应的差异,结果如下:
Users Address Email Phone Work
552 -209 -136 -90 -60
我尝试执行后一种情况,以便将值替换为差值,但这随后立即将新值应用于下一个计算,因此我得到了没有意义的野生值。
谢谢!
使用:
- 按
diff
获取所有列的差异,按add_prefix
更改列名 - 按列
axis=1
concat
- 通过使用子集
[]
平展压缩两个列名称来重新排序列名称 - 按
iloc
删除第一列
df1 = df.diff(axis=1).add_prefix('Diff')
df = pd.concat([df, df1], axis=1)
c = list(sum(zip(df1.columns, df.columns), ()))
print (c)
['DiffUsers', 'Users', 'DiffAddress', 'Address', 'DiffEmail',
'Email', 'DiffPhone', 'Phone', 'DiffWork', 'Work']
df = df[c].iloc[:, 1:]
print (df)
Users DiffAddress Address DiffEmail Email DiffPhone Phone DiffWork
0 552 -209.0 343 -136.0 207 -90.0 117 -60.0
Work
0 57
或者:
df2 = df.diff(axis=1).fillna({'Users':df['Users']})
print (df2)
Users Address Email Phone Work
0 552.0 -209.0 -136.0 -90.0 -60.0