Pandas 向现有df添加差异列
我的目标是添加显示我以前列之间差异的列 df 结果:Pandas 向现有df添加差异列,pandas,difference,Pandas,Difference,我的目标是添加显示我以前列之间差异的列 df 结果: 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,但它不起作用,因为它仍然需要使用原始数据。有更好的方法吗 谢谢 difference = (df.shift(axis=1)-df).dropna(axis=1).add_prefix('d')
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,但它不起作用,因为它仍然需要使用原始数据。有更好的方法吗
谢谢
difference = (df.shift(axis=1)-df).dropna(axis=1).add_prefix('d')
pd.concat([df,difference],axis=1)
- .shift(),将索引下移,以便在减去行时,它们将按正确的顺序执行
- 减去然后重新组合
- .shift(),将索引下移,以便在减去行时,它们将按正确的顺序执行
- 减去然后重新组合
- 使用
diff
:
df = df.set_index('Name')
df[['d1','d2']] = -df.diff(axis=1).iloc[:, 1:]
使用
diff
:
df = df.set_index('Name')
df[['d1','d2']] = -df.diff(axis=1).iloc[:, 1:]
我们也可以先选择列名为的列。最后做减法
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
的情况下删除它)我们也可以先使用列名选择列。最后做减法
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
的情况下删除它)非常整洁!但我认为你遗漏了一两行代码。虽然我想我知道你做了什么ᴏʟᴅsᴘᴇᴇᴅ 是的,重新设置:-)非常整洁!但我认为你遗漏了一两行代码。虽然我想我知道你做了什么ᴏʟᴅsᴘᴇᴇᴅ 是的,重新设置:-)嘿。实际上,您可以水平移动。类似于df2.shift(1,axis=1)
感谢您让我知道!我会在有时间的时候更新我的答案。@Tai我想这有帮助。嘿。实际上,您可以水平移动。类似于df2.shift(1,axis=1)
感谢您让我知道!我会在有时间的时候更新我的答案。@Tai我认为这有帮助。