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

如何仅当Name为John时执行Pandas Merge,其余显示0?

实现Pandas条件合并逻辑

需求说明:现有两个DataFrame,仅当Name字段为John时,合并并显示df2中对应的Class值,其余行的Class字段显示0。

步骤1:准备数据与基础合并

先执行左连接合并,确保保留df1的所有行,并匹配df2中的对应数据:

import pandas as pd
import numpy as np

# 定义原始DataFrame
df1 = pd.DataFrame({'Name': ['John', 'Tom', 'Simon', 'Jose'], 
                    'Age': [5, 6, 4, 5]})

df2 = pd.DataFrame({'Name': ['John', 'Tom', 'Jose'],
                    'Class': ['Second', 'Third', 'Fifth']})

# 左连接合并两个DataFrame
merged_df = df1.merge(df2, on='Name', how='left')

步骤2:按条件替换Class字段

用高效的numpy.where方法,仅保留Name为John的Class值,其余替换为0:

merged_df['Class'] = np.where(merged_df['Name'] == 'John', merged_df['Class'], 0)

如果不想引入numpy,也可以用apply方法实现:

merged_df['Class'] = merged_df.apply(lambda row: row['Class'] if row['Name'] == 'John' else 0, axis=1)

最终结果

执行上述代码后,输出的merged_df如下:

Name  Age    Class
0   John    5  Second
1    Tom    6       0
2  Simon    4       0
3   Jose    5       0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:23