Pandas基于另一列填充指定条件下的ColA空值问题
问题分析与解决方法
原代码的问题
你写的df['ColB'].str.split()[:2]是对整个Series的拆分结果做切片,取的是前两行的拆分列表,而不是每行拆分后取前两个单词。这导致赋值时要么索引不匹配,要么只有极个别行被处理,所以ColA的空值数量没变化。
修正后的代码
直接对每行的拆分结果取前两个单词,再合并成字符串后赋值:
# 生成要填充的值:拆分ColB取前两个单词,用空格连接 fill_content = df['ColB'].str.split().str[:2].str.join(' ') # 给符合条件的ColA空值赋值 df.loc[(df['ColA'].isnull()) & (df['ColB'].str.contains('fmv')), 'ColA'] = fill_content
关键细节解释
str.split():按空格拆分每行的ColB内容,得到单词列表;str[:2]:对每行的列表单独取前两个元素;str.join(' '):把两个单词用空格拼成字符串,保证和ColA原有数据格式一致;- 赋值时
fill_content的索引和筛选后的行完全匹配,能精准填充对应位置的空值。
内容的提问来源于stack exchange,提问作者Sid_J
相关产品推荐
相关产品推荐

