如何用Python将多层级类别自动缩减为两级类别?
解决方法:将多层级类别缩减为两级格式
核心逻辑
不管原类别是两级、三级还是更多层级,以-为分隔符拆分字符串,仅保留前两部分再用-拼接,已经是两级的类别保持不变。
具体实现
1. 单条/小批量数据处理(纯字符串操作)
def shrink_category(category): # 按'-'分割字符串,取前两个部分 parts = category.split('-') return '-'.join(parts[:2]) # 测试示例 sample_cats = [ "ABC-XYZ-123-!@!", "ABC-XYZ-2@#", "ABC-XYZ", "dfg-ZZZ-123-!@!", "dfg-ZZZ-2@#" ] for cat in sample_cats: print(shrink_category(cat))
运行输出:
ABC-XYZ ABC-XYZ ABC-XYZ dfg-ZZZ dfg-ZZZ
2. 大型数据集处理(结合Pandas)
针对你10万行的数据集,用Pandas处理效率更高:
import pandas as pd # 读取数据集(假设是CSV格式,其他格式可对应调整读取方法) df = pd.read_csv('your_data.csv') # 批量处理Category列 df['Category'] = df['Category'].apply(lambda x: '-'.join(x.split('-')[:2])) # 保存处理后的结果 df.to_csv('processed_data.csv', index=False)
补充说明
- 如果存在仅一级的类别(如
ABC),上述代码会直接返回原字符串,你可以根据需求添加逻辑(比如补默认后缀、过滤这类数据)。 - 类别中的特殊字符(如
!@#)不会影响分割和拼接操作,因为我们仅按-做分隔。
内容的提问来源于stack exchange,提问作者Luís Henrique Angélico
相关产品推荐
相关产品推荐

