我的目标是添加显示前几列之间差异的列。
df
Name 0 1 2
A 3 1 0
B 5 4 1
结果:
Name 0 1 2 d1 d2
A 3 1 0 2 (=3-1) 1 (=1-0)
B 5 4 1 1 (=5-4) 3 (=4-1)
我正在考虑创建一个新的df,以查找计算差异,然后将其添加回原始df,但由于仍然需要使用原始数据,所以它无法工作。有没有更好的方法?
谢谢!
发布于 2018-01-20 01:38:10
difference = (df.shift(axis=1)-df).dropna(axis=1).add_prefix('d')
pd.concat([df,difference],axis=1)
发布于 2018-01-20 02:37:32
使用diff
df = df.set_index('Name')
df[['d1','d2']] = -df.diff(axis=1).iloc[:, 1:]
df.reset_index()
Name 0 1 2 d1 d2
A 3 1 0 2.0 1.0
B 5 4 1 1.0 3.0
发布于 2018-01-20 03:21:39
我们也可以选择列的第一个列名。最后做减子运算。
df[['d1','d2']] = df[["0", "1"]] - df[["1", "2"]].values
Name 0 1 2 d1 d2
A 3 1 0 2 1
B 5 4 1 1 3
(我们需要.values
只提取值并忽略其列名。您可以尝试不使用.values
。)
https://stackoverflow.com/questions/48351683
复制相似问题