一次减去多列

问题描述

我有两个数据框:

df_1 = pd.DataFrame({'a' : [7,8,2],'b': [6,6,11],'c': [4,6]})
df_1

df_1

df_2 = pd.DataFrame({'d' : [8,4,12],'e': [16,2,1],'f': [9,3,4]})
df_2

df_2

我的目标是这样的:

expected output

以一种“一次性”的方式,我可以多次减去每一列。

我正在尝试 for 循环,但我卡住了!

解决方法

您可以将它们减去为 numpy 数组(使用 .values),然后将结果放入数据框中:

df_3 = pd.DataFrame(df_1.values - df_2.values,columns=list('xyz'))

#     x   y  z
# 0  -1 -10 -5
# 1   4   4  5
# 2 -10  10  2

或者将 df_1.columnsdf_2.columns 重命名为 ['x','y','z'],您可以直接减去它们:

df_1.columns = df_2.columns = list('xyz')
df_3 = df_1 - df_2

#     x   y  z
# 0  -1 -10 -5
# 1   4   4  5
# 2 -10  10  2