Pandas - 通过获取其他列的行差异来创建新列

时间:2018-02-23 03:32:02

标签: python pandas

我有一个最多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)

然而,分配命名肯定不起作用。

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