不同形状的两个pandas DataFrames按索引匹配行相减实现问题
解决方案
核心思路是利用pandas的广播运算规则,指定按行索引对齐进行减法操作,避免默认列对齐导致的空值问题。
操作代码
# 若你的df2是单列DataFrame,提取第一列为Series后按行方向和df1做减法即可 result = df1.sub(df2.iloc[:, 0], axis=0)
代码说明
df2.iloc[:, 0]会提取df2的第一列作为Series,满足广播运算的结构要求axis=0指定运算按行索引对齐,会将df2的单行值自动广播到df1对应行的所有列执行减法,完全符合需求
输出结果验证
运行代码后得到的result结构如下,和预期输出完全一致:
col1 col2 col3 col4 col5 AA a -9 -8 -7 -6 -5 b -18 -18 -17 -16 -15
如果你不想修改df2的结构,也可以先把df2的列名重命名为和df1的列名完全一致再直接相减,但上述方法是最高效的实现方式。
内容的提问来源于stack exchange,提问作者nani python
相关产品推荐
相关产品推荐

