如何将pandas列中的单值列表转换为字符串以便进行groupby聚合
你写的转换代码把提取出的元素又重新封装成了列表,所以格式没有变化,去掉外层的方括号即可。
正确转换方法
方法1:用pandas内置访问器(最高效)
直接使用列表列的str访问器提取首个元素,无需写自定义apply逻辑:
df['index'] = df['index'].str[0]
方法2:带空值兼容的apply写法
如果存在部分列表为空的情况,可以加判断避免索引报错:
import pandas as pd df['index'] = df['index'].apply(lambda lst: lst[0] if len(lst) > 0 else pd.NA)
后续聚合操作
转换完成后index列会变为普通的字符串/数值类型,直接执行groupby聚合即可,比如对count列求和:
res_df = df.groupby('index', as_index=False)['count'].sum()
验证转换结果
你可以执行以下代码确认列类型已经修改:
print(df['index'].apply(type).unique()) # 正常输出应该包含 <class 'str'> 等非列表类型,不再出现 <class 'list'>
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

