You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对结构与列名相同的DataFrame仅数字列执行乘法运算?

仅对同结构DataFrame的数字列执行乘法运算

以下是针对两个结构、列名完全一致的DataFrame,仅对数字列做乘法的可行方案:

核心思路

  1. 识别出DataFrame中的数字列(int、float等类型)
  2. 对两个DataFrame的对应数字列执行乘法
  3. 保留原DataFrame的字符列,与运算后的数字列合并(或直接替换原数字列)

简洁实现代码

直接复制其中一个DataFrame作为结果模板,将数字列替换为两DataFrame对应列的乘积:

import pandas as pd

# 示例DataFrame(结构、列名一致)
df1 = pd.DataFrame({
    'category': ['Electronics', 'Clothing', 'Food'],
    'price': [500, 120, 30],
    'discount_rate': [0.8, 0.75, 0.9]
})

df2 = pd.DataFrame({
    'category': ['Electronics', 'Clothing', 'Food'],
    'price': [2, 3, 1],
    'discount_rate': [1.05, 1.1, 0.95]
})

# 筛选所有数字类型的列
numeric_cols = df1.select_dtypes(include='number').columns

# 复制df1作为结果基础,替换数字列为乘积
final_df = df1.copy()
final_df[numeric_cols] = df1[numeric_cols] * df2[numeric_cols]

# 输出结果
print(final_df)

代码说明

  • select_dtypes(include='number'):自动筛选出所有数字类型的列(包含int、float、integer、float64等),无需手动指定列名
  • df1.copy():保留原DataFrame的字符列结构和内容,避免直接修改原数据
  • 直接赋值替换数字列:确保字符列完全保留,数字列更新为两DataFrame的乘积

扩展验证

如果需要确认筛选的数字列是否正确,可以先打印列名:

print("数字列:", numeric_cols.tolist())

内容的提问来源于stack exchange,提问作者Abin Benny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:45:41