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

Pandas按不同列不同条件筛选空值和John Doe行输出为空如何解决

问题分析
  • 筛选语法错误:当前代码对loc返回的DataFrame对象直接做位或|运算,该操作逻辑完全错误。正确用法是先构造每个判断条件对应的布尔序列,再将多个条件用|拼接后整体传入loc。
  • 空值匹配逻辑错误:代码中判断列等于单个空格" ",但csv中空单元格被pandas读取后为NaN或空字符串"",无法匹配到空值。
  • 数据源使用错误:df2是在更新fullname列之前创建的,存储的是原始读取的旧数据,后续筛选使用df2而非更新了fullname的df,导致匹配结果不符合预期。
修正后完整代码
import pandas as pd

# 读取文件
df = pd.read_csv('file.csv', dtype=str, header=0)

# 计算fullname列
df['fullname'] = (df[['First Name', 'Last Name']].fillna('')
                  .agg(' '.join, axis=1)
                  .str.strip()
                  .replace('', 'John Doe'))

# 构造筛选条件:First Name空 / Last Name空 / fullname为John Doe
cond_first_empty = df['First Name'].fillna('').str.strip() == ''
cond_last_empty = df['Last Name'].fillna('').str.strip() == ''
cond_john_doe = df['fullname'] == 'John Doe'

# 筛选符合条件的行,保留指定列
df_sort = df.loc[cond_first_empty | cond_last_empty | cond_john_doe, 
                 ['First Name', 'Last Name', 'fullname']]

# 输出文件
df.to_csv('file.csv', index=False)
df_sort.to_csv('missing names.csv', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:06