Pandas列中的最大值和减去

时间:2017-04-10 15:23:10

标签: python pandas

我有一个pandas数据框,如:

df = pd.DataFrame({'A':[1,1,1,2,2,2,3,3,3],
               'B':[3,2,20,1,6,2,3,22,1]})

我想找到' max'栏中的值' B'然后从列' B'中的所有值中减去此最大值。并创建一个新专栏' C'随着新的结果。底部df的最大值为22。

   A  B  C
2  1  3  -19
1  1  2  -20
0  1  20 -2
3  2  1  -21
5  2  6  -16
4  2  2  -20
8  3  3  -19
7  3  22  0
6  3  1  -21

2 个答案:

答案 0 :(得分:6)

您可以为新列指定减去列' B'的结果。使用max列' B':

In [25]:
df['C'] = df['B'] - df['B'].max()
df

Out[25]:
   A   B   C
0  1   3 -19
1  1   2 -20
2  1  20  -2
3  2   1 -21
4  2   6 -16
5  2   2 -20
6  3   3 -19
7  3  22   0
8  3   1 -21

答案 1 :(得分:2)

使用sub来减去列B的{​​{3}}值:

df['C'] = df['B'].sub(df['B'].max())
print (df)

   A   B   C
0  1   3 -19
1  1   2 -20
2  1  20  -2
3  2   1 -21
4  2   6 -16
5  2   2 -20
6  3   3 -19
7  3  22   0
8  3   1 -21

max的另一个解决方案:

df = df.assign(C=df['B'].sub(df['B'].max()))
print (df)
   A   B   C
0  1   3 -19
1  1   2 -20
2  1  20  -2
3  2   1 -21
4  2   6 -16
5  2   2 -20
6  3   3 -19
7  3  22   0
8  3   1 -21