You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame多列数据按冒号前数字升序转换为唯一列表?

处理DataFrame提取冒号前数字并生成升序去重列表

原始DataFrame

012
0:057:0166:0
0:557:20166:27
0:1057:8:166:36
0:2757:4166: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)

步骤说明

  1. 扁平化数据:通过values.flatten()将二维DataFrame转换为一维数组,便于统一处理所有单元格内容。
  2. 提取前缀数字:遍历每个元素,用split(':')[0]截取冒号前的字符串,再转换为整数类型。
  3. 去重排序:利用集合set()自动去重,再通过sorted()实现升序排列。
  4. 格式转换:将最终结果转换为需求指定的DataFrame结构,完成输出。

内容的提问来源于stack exchange,提问作者Zunaira Said

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:48:15