我有一个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
答案 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