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

如何将左DataFrame单行数据按匹配Key拆分至右DataFrame多行?

解决方案

你需要实现的是将左表中每个Key对应的Data值,平均分配到右表该Key的所有行中(每行取值为Data / 该Key在右表的行数),用Pandas可以这样做:

步骤说明

  • 先将右表与左表按Key做左连接,让右表每行都带上对应Key的Data值
  • 按Key分组,将每组的Data值替换为Data总量 / 组内行数

代码示例

import pandas as pd

# 创建示例数据
left_df = pd.DataFrame({'Key': ['A', 'B'], 'Data': [4, 1]})
right_df = pd.DataFrame(
    {'Key': ['A', 'A', 'A', 'B', 'A'], 
     'Other Data': ['Monday', 'Tuesday', 'Wednesday', 'Monday', 'Thursday']}
)

# 合并左右表,保留右表所有行并匹配对应Key的Data
merged_df = pd.merge(right_df, left_df, on='Key', how='left')

# 按Key分组,计算每行应分配的Data值
merged_df['Data'] = merged_df.groupby('Key')['Data'].transform(
    lambda group: group.iloc[0] / len(group)
)

print(merged_df)

输出结果

Key Other Data  Data
0   A     Monday   1.0
1   A    Tuesday   1.0
2   A  Wednesday   1.0
3   B     Monday   1.0
4   A   Thursday   1.0

如果需要将Data列转为整数类型,只需添加一行:

merged_df['Data'] = merged_df['Data'].astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:47:47