连续插入每列之间的列差异

  • 本文关键字:之间 连续 插入 python pandas
  • 更新时间 :
  • 英文 :


>我有一个单行长的数据帧计数的结果,如下所示:

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=1concat
  • 通过使用子集[]平展压缩两个列名称来重新排序列名称
  • 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

最新更新