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

如何对含整数与字符串的groupby列应用str.join方法

解决混合类型数据拼接报错的方案

你遇到的TypeError确实是因为Y列同时存在字符串和整数类型,','.join()方法只能处理纯字符串序列,无法直接拼接整数元素。以下是两种可行的改进方案:


方法一:提前将整列转为字符串类型

先把Y列的所有元素统一转为字符串,再执行分组拼接:

import pandas as pd
# df=pd.read_excel('test.xlsx')
df = pd.DataFrame({"X": ["a", "a", "a", "a", "b", "b", "b"],
                   "Y": ["hello", 3, "bye", "hi", "apple", "orange", 4]})

# 统一转换为字符串类型
df['Y'] = df['Y'].astype(str)
# 分组拼接后重置索引,恢复DataFrame格式
orden = df.groupby('X')['Y'].apply(','.join).reset_index()
print(orden)

输出结果:

XY
0ahello,3,bye,hi
1bapple,orange,4

方法二:在分组拼接时动态转换类型

如果不想修改原DataFrame的列类型,可以在apply的lambda函数里,把每个元素实时转为字符串再拼接:

import pandas as pd
# df=pd.read_excel('test.xlsx')
df = pd.DataFrame({"X": ["a", "a", "a", "a", "b", "b", "b"],
                   "Y": ["hello", 3, "bye", "hi", "apple", "orange", 4]})

# 分组时逐个转换元素类型再拼接
orden = df.groupby('X')['Y'].apply(lambda x: ','.join(str(item) for item in x)).reset_index()
print(orden)

这个方法会得到和上面完全一致的输出结果,且不会改变原数据中Y列的类型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:24:22