如何对数值型DataFrame的ColA列每个单元格数字去重排序生成新列
实现方案
核心思路
将Col_A列的数值转为字符串后拆分出单个数字字符,利用集合去重后按升序排序,最终拼接为字符串生成Col_B列即可。因为数字字符的ASCII码顺序和数值大小顺序完全一致,直接排序即可得到正确的升序结果。
代码实现
首先导入依赖并构造示例DataFrame:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Col_A': [5544412, 5642356, 34342] })
然后自定义处理函数或者直接用lambda实现逻辑:
# 方式1:自定义函数,可读性更高 def process_digit(num): # 转字符串->拆分去重->升序排序->拼接 sorted_unique = sorted(set(str(num))) return ''.join(sorted_unique) # 如果你需要Col_B为数值类型,替换上一行为: # return int(''.join(sorted_unique)) df['Col_B'] = df['Col_A'].apply(process_digit) # 方式2:一行lambda写法,适合简单逻辑 # df['Col_B'] = df['Col_A'].apply(lambda x: ''.join(sorted(set(str(x)))))
输出结果
运行后得到的df和预期完全一致:
| Col_A | Col_B |
|---|---|
| 5544412 | 1245 |
| 5642356 | 23456 |
| 34342 | 234 |
内容的提问来源于stack exchange,提问作者Anky
相关产品推荐
相关产品推荐

