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

如何使用pandas合并列名相同但数据不同的两个表并输出指定格式结果

实现代码

import pandas as pd

# 此处为示例数据构造,实际使用时替换为你自己的df1、df2即可
df1 = pd.DataFrame({
    'col1': ['A', 'B', 'C'],
    'col2': [131, 123, 1424],
    'col3': [666, 345, 3214],
    'col4': [777, 435, 2314]
})
df2 = pd.DataFrame({
    'col1': ['A', 'B', 'C'],
    'col2': [10, 20, 23],
    'col3': [1, 14, 43],
    'col4': [0, 68, 4]
})

# 按公共列col1合并两个表
merged_df = df1.merge(df2, on='col1', suffixes=('', '_df2'))

# 定义字段拼接规则,匹配df2值为0时不显示百分比的需求
def format_col(row, col_name):
    val_base = row[col_name]
    val_percent = row[f'{col_name}_df2']
    if val_percent == 0:
        return str(val_base)
    return f'{val_base} ({val_percent}%)'

# 对所有数值列应用格式规则
for col in ['col2', 'col3', 'col4']:
    merged_df[col] = merged_df.apply(lambda x: format_col(x, col), axis=1)

# 提取目标列得到最终结果
result = merged_df[['col1', 'col2', 'col3', 'col4']]

输出结果

运行后输出和需求完全匹配:

col1         col2        col3        col4
0    A     131 (10%)    666 (1%)         777
1    B     123 (20%)   345 (14%)  435 (68%)
2    C  1424 (23%)  3214 (43%)   2314 (4%)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:54:05