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

在AWS环境下用Python实现DataFrame数字列的分组聚合

解决DataFrame分组合并Scores为逗号分隔字符串的问题

正确的聚合实现代码

首先确保显式将整数类型的Scores转为字符串后再聚合,避免因类型问题导致的异常:

方法1:Lambda+类型转换直接聚合

import pandas as pd

# 假设你的DataFrame为df
result = df.groupby(['Test', 'Subject'])['Scores'].agg(
    lambda x: ','.join(map(str, x))
).reset_index()

方法2:先转换列类型再聚合(可读性更强)

# 新增字符串类型的分数列
df['Scores_str'] = df['Scores'].astype(str)
# 分组合并
result = df.groupby(['Test', 'Subject'])['Scores_str'].agg(','.join).reset_index()
# 还原列名
result.rename(columns={'Scores_str': 'Scores'}, inplace=True)

排查AWS环境异常的关键点

1. 数据类型验证

AWS环境中务必检查Scores列的类型:

print(df['Scores'].dtype)

如果是整数/数值类型,直接使用','.join(x)会触发TypeError,部分本地pandas版本可能有隐式兼容,但AWS环境的版本可能更严格,必须显式转字符串。

2. 分组键一致性检查

确认Test和Subject列的类型及值是否统一,避免因分组键差异导致每组仅含单个数据:

# 查看分组键的唯一值
print(df['Test'].unique())
print(df['Subject'].unique())
# 查看每组的数据量
grouped = df.groupby(['Test', 'Subject'])
for group_name, group_data in grouped:
    print(f"分组: {group_name}, 数据行数: {len(group_data)}")

如果每组行数都是1,说明原始数据的分组键没有重复值,聚合自然只会返回单个数据点,这时候要检查原始数据的分组逻辑是否正确。

3. pandas版本兼容性

对比本地和AWS环境的pandas版本:

print(pd.__version__)

若版本差异较大(比如本地是2.x,AWS是1.x),部分聚合语法的行为可能不同,可改用兼容性更强的apply写法:

result = df.groupby(['Test', 'Subject']).apply(
    lambda x: ','.join(map(str, x['Scores']))
).reset_index(name='Scores')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:07:08