如何将NaN行分隔的Pandas字符列反向implode为对应原单词?
解法逻辑
利用NaN行作为分组分隔符,将相邻非NaN字符归为同一单词组,拼接后映射回原行即可。
实现代码
首先构造示例数据(若已有数据可跳过):
import pandas as pd import numpy as np df = pd.DataFrame({ 'characters': ['b', 'a', 't', np.nan, 'c', 'o', 'p'], 'result': ['TP', 'TP', 'FN', None, 'TN', 'FP', 'TP'] })
核心处理代码:
# 生成辅助分组ID,每遇到NaN行就切换到下一个分组 df['group_id'] = df['characters'].isna().shift(fill_value=0).cumsum() # 按分组拼接字符生成单词映射表 word_mapper = df.groupby('group_id')['characters'].agg( lambda x: ''.join(x.dropna()) if x.notna().any() else None ) # 映射回原表 df['word'] = df['group_id'].map(word_mapper) # NaN行单独设置word为None df.loc[df['characters'].isna(), 'word'] = None # 清理辅助列 df.drop(columns='group_id', inplace=True)
处理后得到的df完全符合要求的输出格式。
内容的提问来源于stack exchange,提问作者Rayleigh
相关产品推荐
相关产品推荐

