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

如何高效计算Pandas Series中各单词对应数值的平均值?

高效计算单词对应数值的平均值

核心思路

通过Pandas内置的矢量化操作+安全的字符串解析,替代逐行循环,大幅提升处理效率,步骤如下:

  1. 安全解析字符串为嵌套列表:用ast.literal_eval替代风险较高的eval,将每个字符串格式的嵌套列表转为实际Python列表。
  2. 展开嵌套结构:用explode()把每个列表中的[单词,数值]二元组拆分为单独行。
  3. 拆分字段:将二元组拆分为独立的单词列和数值列。
  4. 分组聚合求均值:按单词分组,计算对应数值的平均值。

完整代码示例

import pandas as pd
import ast

# 构造示例Series
s = pd.Series([
    "[['word1', 527], ['word2', 708]]",
    "[['word1', 600], ['word3', 800]]",
    "[['word2', 750], ['word3', 780]]"
])

# 1. 解析字符串为嵌套列表
parsed_series = s.apply(ast.literal_eval)

# 2. 展开每个列表中的二元组
exploded_data = parsed_series.explode()

# 3. 拆分为单词和数值列
result_df = pd.DataFrame(exploded_data.tolist(), columns=['word', 'value'])

# 4. 分组计算平均值,可转为字典格式
word_average = result_df.groupby('word')['value'].mean()
word_average_dict = word_average.to_dict()

# 输出结果
print(word_average)
# word1    563.5
# word2    729.0
# word3    790.0
# Name: value, dtype: float64

效率说明

  • 避免了手动循环的低效操作,所有步骤均基于Pandas优化过的矢量化/批量处理逻辑,数据量越大,效率优势越明显。
  • ast.literal_eval仅解析合法的Python字面量,比eval更安全,不会执行恶意代码。

内容的提问来源于stack exchange,提问作者rse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:02:23