我有两列 A 和 B。我想用 A 列中的每个值减去 B 列的值,并在不使用 for 循环的情况下创建一个新列。
下面是我的数据框
A B
0 5 3
1 3 2
2 8 1
期望的输出
A B C D E
0 5 3 2 3 4
1 3 2 0 1 2
2 8 1 5 6 7
C = A - B[0]
D = A - B[1]
E = A - B[2]
最佳答案
使用 numpy 的数组 broadcasting :
df = pd.DataFrame({'A':[5, 3, 8],
'B':[3, 2, 1]})
df2 = pd.DataFrame(df['A'].values[:, None] - df['B'].values, columns=['C', 'D', 'E'])
df = df.join(df2)
结果:
A B C D E
0 5 3 2 3 4
1 3 2 0 1 2
2 8 1 5 6 7
解释:
>>> df['A'].values[:, None]
array([[5],
[3],
[8]])
>>> df['B'].values
array([3, 2, 1])
当减去它们时,numpy“拉伸(stretch)”df['A'].values[:, None]
到:
array([[5, 5, 5],
[3, 3, 3],
[8, 8, 8]])
和df['B'].values
到:
array([[3, 2, 1],
[3, 2, 1],
[3, 2, 1]])
减法的结果是:
array([[2, 3, 4],
[0, 1, 2],
[5, 6, 7]])
关于python - 如何用另一列中的每个值减去一个列值( Pandas ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60652215/