如何使用Python Pandas按similarity分组并添加cat标签列?
解决方案
针对百万行级别的数据集,优先选择效率高的矢量化操作,这里可以通过将不可哈希的列表转换为可哈希的元组,再利用Pandas内置的分组编号工具实现需求:
方法一:使用pd.factorize(推荐,速度最快)
import pandas as pd # 假设你的DataFrame名为df df['cat'] = pd.factorize(df['similarity'].apply(tuple))[0] + 1
- 步骤说明:
df['similarity'].apply(tuple):将列中的列表转换为元组(元组是可哈希类型,能被factorize识别)pd.factorize():为每个唯一的元组分配一个从0开始的整数标识- 最后
+1是为了让分组编号从1开始,和预期输出一致
方法二:使用groupby.ngroup
df['cat'] = df.groupby(df['similarity'].apply(tuple)).ngroup() + 1
- 这个方法通过分组后直接生成组编号,逻辑更直观,性能略低于
factorize但同样能轻松处理百万行数据
验证输出
运行以上代码后,你的DataFrame会生成符合预期的cat列:
Questions cnt similarity cat 0 ABC 1 [1, 2, 3] 1 1 abc 2 [1, 2, 3] 1 2 cba 3 [2, 3, 1] 2 3 abcd 4 [4, 5, 6] 3 4 dcsa 5 [2, 3, 1] 2 5 adcd 6 [4, 5, 6] 3 6 abcd 7 [1, 2, 3] 1 7 cba 8 [7, 8, 9] 4
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

