我有两个数据帧^M
和df1
,如下所示:
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 - df1
和fouls
列,并保持goals
和round
列不变。
如果我执行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
谢谢。
答案 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