如何用更高效的Pandas方法将每行单字典列表转为列名与列数据?
如何用Pandas原生方法提取列表中字典的键为列、值为行数据?
直接用下面两种Pandas原生方法就能搞定,不需要自定义函数,步骤更简洁高效:
方法一:矢量化操作(大数据集首选)
利用str[0]直接取出每行列表里的唯一字典,再通过pd.DataFrame()自动展开键为列、值为行:
# 提取字典并转为DataFrame sentiment_df = pd.DataFrame(analyze['sentiment'].str[0].tolist()) # 合并回原DataFrame(可选,根据需求保留原列或替换) analyze = pd.concat([analyze.drop('sentiment', axis=1), sentiment_df], axis=1)
方法二:简化apply操作
如果数据量不大,也可以用apply(pd.Series)直接展开字典:
# 展开字典为新列 sentiment_df = analyze['sentiment'].str[0].apply(pd.Series) # 合并回原表 analyze = analyze.join(sentiment_df)
效果说明
不管用哪种方法,原来每行的[{'label': 'POSITIVE', 'score': 0.9969509840011597}]都会被转换成两列:
label列:对应值为POSITIVEscore列:对应值为0.9969509840011597
对比你之前的自定义函数方法,这两种原生方法无需额外编写转换函数,而且方法一的矢量化操作(str[0]+tolist())比apply自定义函数的效率高很多,尤其处理大规模数据时差异更明显。
内容的提问来源于stack exchange,提问作者Ja4H3ad
相关产品推荐
相关产品推荐

