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

如何在两个不同DataFrame的列上应用自定义函数?

问题描述

现有两个DataFrame:
df1

unicorn  size
0    blue     3
1     red     4
2    piNk     6

df2

unicorn  size
0    blue     1
1     red     2

需要按列对这两个DataFrame的行应用自定义函数:

def some_operation(a, b):
    return a * b  # 结合预期结果,此处逻辑为两数相乘

预期输出结果:

size A  size B  result
0       3       1       3
1       3       2       6
2       4       1       4
3       4       2       8
4       6       1       6
5       6       2      12
解决方案

要实现这个需求,核心是先获取两个DataFrame中size列的笛卡尔积(所有组合),再对每组组合应用自定义函数,具体步骤如下:

  1. 生成笛卡尔积
    通过给两个DataFrame添加临时键,再做内连接来生成所有行组合:
import pandas as pd

# 添加临时键用于连接
df1['key'] = 1
df2['key'] = 1

# 内连接生成所有组合,并重命名列
merged_df = pd.merge(df1, df2, on='key').rename(columns={
    'size_x': 'size A',
    'size_y': 'size B'
})

# 删除临时键
merged_df = merged_df.drop('key', axis=1)
  1. 应用自定义函数
    使用apply方法对每行的目标列执行函数:
def some_operation(a, b):
    return a * b

merged_df['result'] = merged_df.apply(lambda row: some_operation(row['size A'], row['size B']), axis=1)
  1. 输出最终结果
    保留需要的列即可:
final_result = merged_df[['size A', 'size B', 'result']]
print(final_result)

如果自定义函数逻辑就是简单的两列运算(比如这里的乘法),可以直接简化为列运算,效率更高:

merged_df['result'] = merged_df['size A'] * merged_df['size B']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:57:27