通过仅选择特定列减去两个数据框

时间:2019-11-11 12:56:01

标签: python pandas dataframe

我有两个数据帧^Mdf1,如下所示:

df2

我想做的是像 round fouls goals team_id 0 1 15 1 262 1 1 10 2 263 2 1 5 0 315 3 1 7 3 316 round fouls goals team_id 0 2 23 3 262 1 2 13 5 263 2 2 11 3 315 3 2 19 5 316 这样的减法。但是,我只想减去df3 = df2 - df1fouls列,并保持goalsround列不变。

如果我执行team_id,我会得到:

df3 = df2 - df1

我该怎么做才能获得以下信息:

   round  fouls  goals  team_id
0      1      8      2        0
1      1      3      3        0
2      1      6      3        0
3      1     12      2        0

谢谢。

1 个答案:

答案 0 :(得分:4)

您可以在列表中指定要减去的列:

cols = ['fouls','goals']
df2[cols] = df2[cols]- df1[cols]
print (df2)
   round  fouls  goals  team_id
0      2      8      2      262
1      2      3      3      263
2      2      6      3      315
3      2     12      2      316

或为要排除的列名称指定要排除的列的列,对于要减去的列指定Index.difference

exclude = ['round','team_id']
cols = df1.columns.difference(exclude)
df2[cols] = df2[cols]- df1[cols]
print (df2)
   round  fouls  goals  team_id
0      2      8      2      262
1      2      3      3      263
2      2      6      3      315
3      2     12      2      316

对于新的DataFrame,请使用:

df3 = df2.copy()
cols = df1.columns.difference(['round','team_id'])
df3[cols] = df2[cols]- df1[cols]
print (df3)
   round  fouls  goals  team_id
0      2      8      2      262
1      2      3      3      263
2      2      6      3      315
3      2     12      2      316