如何自动将Pandas DataFrame列值映射为rowN格式?无需硬编码
Pandas批量按组替换列值为rowN格式
你可以用pd.factorize()函数高效完成这个需求,不需要硬编码,完全适配大规模数据场景:
实现逻辑
pd.factorize()会自动将列中的唯一值映射为连续整数编码(从0开始),相同值对应相同编码,编码顺序严格按照值首次出现的顺序排列- 将编码加1(让序号从1开始),再与"row"拼接即可得到目标格式
代码示例
先构造你的示例DataFrame:
import pandas as pd df = pd.DataFrame({ "列1": [1, 2, 3, 4, 5], "列2": ["a", "a", "b", "c", "d"] })
执行替换操作:
# 获取列2的分组编码 codes, _ = pd.factorize(df["列2"]) # 转换为rowX格式 df["列2"] = "row" + (codes + 1).astype(str)
最终结果
处理后的数据框如下:
| 列1 | 列2 |
|---|---|
| 1 | row1 |
| 2 | row1 |
| 3 | row2 |
| 4 | row3 |
| 5 | row4 |
这个方法全程自动化,不管列中有多少种唯一值,都能快速生成对应的rowN标签,处理效率远高于硬编码方式。
内容的提问来源于stack exchange,提问作者MakM
相关产品推荐
相关产品推荐

