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

如何在Pandas中基于单列对多列执行多种聚合与提取操作?

实现DataFrame分组聚合需求的解决方案

针对你给出的DataFrame,我们可以通过Pandas的groupby结合agg方法来实现按primaryName分组后的多列自定义聚合操作,具体代码如下:

import pandas as pd

# 构造示例DataFrame
data = {
    'primaryName': ['Fred Astaire']*4,
    'averageRating': [7.0, 6.9, 7.0, 7.1],
    'primaryProfession': ['soundtrack,actor,miscellaneous']*4,
    'knownForTitles': ['tt0072308', 'tt0031983', 'tt0050419', 'tt0053137'],
    'runtimeMinutes': [165, 93, 103, 134]
}
df = pd.DataFrame(data, index=[1,2,3,4])

# 执行分组聚合操作
result_df = df.groupby('primaryName').agg(
    # 对averageRating列求和
    averageRating=('averageRating', 'sum'),
    # 从primaryProfession提取actor/actress,取组内第一个匹配结果
    primaryProfession=('primaryProfession', lambda x: x.str.extract(r'(actor|actress)').iloc[0, 0]),
    # 统计knownForTitles的条目数
    knownForTitles=('knownForTitles', 'count'),
    # 对runtimeMinutes列求和
    runtimeMinutes=('runtimeMinutes', 'sum')
).reset_index()

# 调整索引为1,匹配示例输出格式
result_df.index = [1]

print(result_df)

代码说明:

  • 分组:使用groupby('primaryName')将数据按姓名分组,确保同一人物的所有行被归为一组。
  • 聚合操作:
    • averageRating和runtimeMinutes直接使用Pandas内置的sum函数完成求和。
    • knownForTitles使用count函数统计组内条目数量。
    • primaryProfession通过str.extract配合正则表达式(actor|actress)提取目标职业,由于组内该列值一致,取第一个匹配结果即可。
  • 索引调整:最后通过reset_index将分组键primaryName还原为普通列,并手动设置索引为1,和示例输出格式对齐。

运行上述代码后,将得到你需要的输出结果:

primaryName  averageRating primaryProfession  knownForTitles  runtimeMinutes
1  Fred Astaire           28.0              actor               4             495

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:06:26