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

如何将含多词标签的嵌套列表转为指定结构的DataFrame?

解决多词标签拆分错误的DataFrame转换问题

你的问题出在直接用split(" ")会把所有空格都拆分,导致多词标签被拆成多个列,打乱了DataFrame的结构。这里给你两种实用的解决思路:

方法一:从右侧拆分(适用于数值在字符串最后)

如果每个字符串都是「多词标签 + 数值」的固定结构,数值是最后一部分,用rsplit(" ", 1)从右侧只拆一次,就能把前面所有内容保留为完整标签,最后一段单独作为数值:

import pandas as pd

# 示例数据
merged = ["Niveaux très haut 10", "Moyen niveau 5", "Bas 3"]

# 右侧仅拆分1次,分离标签与数值
processed_data = [item.rsplit(" ", 1) for item in merged]

# 转为DataFrame并指定列名
df = pd.DataFrame(processed_data, columns=["分类标签", "数值"])

# 可选:将数值列转为数值类型,方便后续计算
df["数值"] = pd.to_numeric(df["数值"])

运行后会得到结构正确的DataFrame,多词标签完整保留,数值单独成列。

方法二:正则表达式匹配(适配复杂场景)

如果字符串格式更灵活(比如数值不在最后、标签和数值有特殊分隔符),可以用正则表达式精准提取标签和数值:

比如假设标签是任意非数字内容,数值是包含小数的数字:

import pandas as pd
import re

merged = ["Niveaux très haut 10", "Score moyen: 7.5", "20 points - Bas niveau"]

# 定义正则规则:匹配非数字部分(标签)和数字部分(数值)
pattern = r"([^\d]+)([\d.]+)"
processed_data = []
for item in merged:
    match = re.search(pattern, item)
    if match:
        # 去除标签前后多余空格
        label = match.group(1).strip()
        value = match.group(2)
        processed_data.append([label, value])

df = pd.DataFrame(processed_data, columns=["分类标签", "数值"])
df["数值"] = pd.to_numeric(df["数值"])

这种方法能应对更多复杂格式,只要能通过正则区分标签和数值即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:44:55