Pandas拆分Google情感分析结果为独立列 空值填充None实现方案
解决方案
直接替换原有拆分逻辑即可,核心是提前做空值兜底,强制固定拆分后的列数为4,空值位置自动填充None,从根源避免列数不固定导致的合并报错。
import pandas as pd # 单条情感结果拆分逻辑 def parse_sentiment(val): # 空值/空白值直接返回4个None,保证返回值长度固定 if pd.isna(val) or str(val).strip() == "": return [None, None, None, None] # 有效值按任意空白(空格、换行符)拆分,刚好得到4个元素 return str(val).split() # 执行拆分,固定输出4列 sentiment_split = df01["sentiment"].apply(parse_sentiment).apply(pd.Series) # 可选:给拆分后的列命名,方便后续识别 sentiment_split.columns = ["mag_field", "magnitude", "score_field", "score"] # 可选:把数值列转成浮点类型,方便后续计算 sentiment_split[["magnitude", "score"]] = sentiment_split[["magnitude", "score"]].astype(float) # 和原始DataFrame按行索引合并,不会再出现列数不匹配报错 df_merged = pd.concat([df01, sentiment_split], axis=1)
逻辑说明
- 自定义拆分函数对空值做了前置判断:只要
sentiment列的单元格是NaN、空字符串、全空白内容,直接返回长度为4的None列表,不会出现拆分后长度不足的问题 - 有效值的拆分逻辑和你之前用的
str.split()完全一致,默认按所有空白字符(空格、换行符)切割,刚好匹配Google接口返回的键: 值\n键: 值格式,拆分结果和你之前的有效行输出完全对齐 - 不管原始数据里有没有有效情感分析结果,拆分后都会稳定生成4列,直接和原表拼接即可,不需要额外做列补全操作
效果验证
即使所有行的sentiment字段全为空,拆分结果也会是4列全None的固定结构,满足后续合并要求;存在有效值的行拆分结果和你之前的输出完全一致,不会影响已有逻辑。
内容的提问来源于stack exchange,提问作者dsx
相关产品推荐
相关产品推荐

