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

Pandas如何使用其他列的部分值填充指定列的NaN值

问题原因

原有代码中 df.venue.str.split()[0] 取的是venue列所有值分割后生成的列表Series的首个元素,也就是第一行venue的分割结果,属于固定值,因此所有空行都会被填充为同一个值。

正确实现方案

方案1:向量化操作(性能最优,推荐)

使用str[0]对每一行的分割结果单独取第一个单词,生成和原表行数对齐的Series传入fillna,会自动按索引匹配填充:

df['city'] = df['city'].fillna(df['venue'].str.split(n=1).str[0])

补充说明:split(n=1)表示仅按第一个空格分割1次,不需要分割整段文本,性能更高,也能避免venue值本身包含多个空格的场景下取到错误的结果。

方案2:行级遍历(适合需要额外自定义判断的场景)

如果需要额外加判断逻辑(比如venue为空时的兜底值),可以用apply逐行处理:

import pandas as pd
df['city'] = df.apply(
    lambda row: row['venue'].split()[0] if pd.isna(row['city']) and pd.notna(row['venue']) else row['city'],
    axis=1
)

内容的提问来源于stack exchange,提问作者Puneeth G P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:21:02