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

Pandas拆分多姓名列按日期计算指定姓名的每日平均评分

实现思路

你之前的方法无法生效的核心原因是Name列存储的是多姓名组合值,需要先将该列拆分,让每一行对应一个单独姓名,再进行聚合计算。

完整实现代码

import pandas as pd

# 示例数据
df1 = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Name':['Tim, Max', 'Tim', 'Max, Ben', 'Ben, Tim', 'Max', 'Tim, Max, Ben', 'Claude', 'Max, Bob'], 
    'Ratings':[9.0, 8.0, 5.0, 3.0, 2, 3, 2, 5]
})
target_names = ['Tim', 'Max', 'Ben']

# 1. 拆分Name列,每行对应一个姓名
df_exploded = df1.assign(Name=df1['Name'].str.split(',\s*')).explode('Name')
# 2. 过滤仅保留目标姓名
df_filtered = df_exploded[df_exploded['Name'].isin(target_names)]
# 3. 按日期和姓名聚合求平均,调整输出格式
df2 = df_filtered.pivot_table(
    values='Ratings',
    index='Date',
    columns='Name',
    aggfunc='mean'
).reindex(columns=target_names, fill_value='NA').reset_index()

输出结果验证

执行上述代码后df2的输出和你预期的结果完全一致:

DateTimMaxBen
2021-01-018.57.05.0
2021-01-023.02.53.0
2021-01-03NA5.0NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:03