如何将DataFrame多列数据按冒号前数字升序转换为唯一列表?
处理DataFrame提取冒号前数字并生成升序去重列表
原始DataFrame
| 0 | 1 | 2 |
|---|---|---|
| 0:0 | 57:0 | 166:0 |
| 0:5 | 57:20 | 166:27 |
| 0:10 | 57:8: | 166:36 |
| 0:27 | 57:4 | 166:45 |
需求
提取所有单元格中冒号前的数字,去重后按升序排列生成列表,期望输出:
| list |
|---|
| 0 |
| 57 |
| 166 |
解决代码
import pandas as pd # 构造与示例结构一致的DataFrame df = pd.DataFrame({ 0: ["0:0", "0:5", "0:10", "0:27"], 1: ["57:0", "57:20", "57:8:", "57:4"], 2: ["166:0", "166:27", "166:36", "166:45"] }) # 扁平化所有数据 flat_data = df.values.flatten() # 提取冒号前的数字并转为整数 prefix_nums = [int(item.split(':')[0]) for item in flat_data] # 去重后升序排序 sorted_unique = sorted(set(prefix_nums)) # 转为指定格式的DataFrame result_df = pd.DataFrame({"list": sorted_unique}) print(result_df)
步骤说明
- 扁平化数据:通过
values.flatten()将二维DataFrame转换为一维数组,便于统一处理所有单元格内容。 - 提取前缀数字:遍历每个元素,用
split(':')[0]截取冒号前的字符串,再转换为整数类型。 - 去重排序:利用集合
set()自动去重,再通过sorted()实现升序排列。 - 格式转换:将最终结果转换为需求指定的DataFrame结构,完成输出。
内容的提问来源于stack exchange,提问作者Zunaira Said
相关产品推荐
相关产品推荐

