python - 通过仅选择特定列来减去两个数据框
问题描述
我有两个数据框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
andgoals
列并保持round
andteam_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
我该怎么做才能获得以下信息:
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
提前致谢。
解决方案
您可以在列表中指定减法列:
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
推荐阅读
- python - MySQL SSDictCursor fetchone() 花费太多时间
- excel - Excel 公式问题 - 包括周六在内的营业时间的工作时间
- json - 使用 jsonpath 选择多个属性
- javascript - preactjs,onclick 切换器触发两次
- r - 如何处理 SQlite 中的 N/A 值?
- javascript - 使用特定步骤随机播放数组的某些元素
- python-3.x - 为什么我的 tkinter 按钮不是我指定的宽度?
- sql - sql 将内容匹配的行删除为更完整的行
- javascript - ExtJs 中的属性网格
- azure-sql-database - 仅当目标数据库不存在时,才使用 ARM 模板通过复制另一个数据库来创建数据库