如何对结构与列名相同的DataFrame仅数字列执行乘法运算?
仅对同结构DataFrame的数字列执行乘法运算
以下是针对两个结构、列名完全一致的DataFrame,仅对数字列做乘法的可行方案:
核心思路
- 识别出DataFrame中的数字列(int、float等类型)
- 对两个DataFrame的对应数字列执行乘法
- 保留原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
相关产品推荐
相关产品推荐

