如何用更简洁方法对同索引同列名的DataFrame对应值做减法
简化同结构数值型DataFrame的对应位置减法
既然你的两个DataFrame索引、列名完全匹配,且所有列都是float64数值类型,完全没必要用select_dtypes,直接执行减法即可:
df3 = df2 - df1
为什么这能行?
Pandas的DataFrame算术运算默认会自动按索引和列名对齐元素,只要两个DF的结构完全一致,就能精准完成对应位置的减法操作,生成的新DF结构和原DF完全相同。
你之前用的select_dtypes在这里属于冗余操作——因为你已经明确所有列都是数值类型,这个过滤步骤没有实际作用,反而多了一次不必要的类型检查。
如果后续遇到包含非数值列的同结构DF,只想对数值列做减法,可以用sub方法的简化写法:
df3 = df2.sub(df1, fill_value=0) # 仅数值列执行减法,非数值列保留df2的原值
不过这是拓展场景,对你当前的需求来说,直接df2 - df1就是最优解。
内容的提问来源于stack exchange,提问作者Panvas
相关产品推荐
相关产品推荐

