我有一个最多500列的df,并希望通过获取每行(每列)之间的绝对差值来创建新列,并将其保存在一个新的500列中。
例如有3列:
A B C
4 6 1
8 9 6
9 3 7
2 2 1
会创建:( AdBdCd是ABC中每行的差异):
A B C Ad Bd Fd
4 6 1 - - -
8 9 6 4 3 5
9 3 7 1 -6 2
2 2 1 -7 -1 -6
我的伪代码看起来像这样;
col_names = ['A','B','C']
df[col_names & '_difference'] = df[col_names] - df[col_names].shift(-1)
然而,分配命名肯定不起作用。
答案 0 :(得分:3)
pd.concat([df, df.diff().add_suffix('_diff')], axis=1)
print(df)
A B C A_diff B_diff C_diff
0 4 6 1 NaN NaN NaN
1 8 9 6 4.0 3.0 5.0
2 9 3 7 1.0 -6.0 1.0
3 2 2 1 -7.0 -1.0 -6.0