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

如何将特定嵌套列表转换为去除dtype的三列pandas DataFrame

解决方案

你遇到的拆分问题核心是子列表内的第二段内容是pandas Series的默认打印输出,字段间用数量不等的空格做对齐填充,尾部还自带dtype: float64标识,用固定单空格分割必然会出现空值、字段错位问题,按下面的代码处理即可:

  • 遍历每个子列表,第一个元素直接作为第一列的ID值
  • 处理第二段Series文本:先删除尾部的dtype: float64标识,逐行拆分后用无参数split()自动适配任意长度的连续空格,切出第二列的名称和第三列的数值
  • 所有行收集完成后直接转成DataFrame即可
import pandas as pd

# 此处替换为你的原始嵌套列表
raw_data = [['NP-00002',
  '''Motor1    0.126878
  Lpi           0.099597
  dtype: float64'''],
 ['NP-00067',
  '''Health    0.253135
  Travel     0.157896
  dtype: float64'''],
 ['LE-00035',
  '''Train      0.134382
  Property    0.126089
  dtype: float64'''],
 ['NP-00009',
  '''Start    0.171959
  Casco    0.163557
  dtype: float64''']]

rows = []
for item in raw_data:
    group_id = item[0]
    # 清理dtype标识、去除首尾多余空白
    content = item[1].replace('dtype: float64', '').strip()
    for line in content.split('\n'):
        line = line.strip()
        if not line:
            continue
        # 无参数split自动跳过任意长度连续空格,不会产生空值
        feat_name, feat_val = line.split()
        rows.append([group_id, feat_name, float(feat_val)])

df = pd.DataFrame(rows, columns=['1st column', '2nd column', '3rd column'])

运行后输出结果完全匹配预期:

1st column 2nd column  3rd column
0    NP-00002     Motor1    0.126878
1    NP-00002        Lpi    0.099597
2    NP-00067     Health    0.253135
3    NP-00067     Travel    0.157896
4    LE-00035      Train    0.134382
5    LE-00035   Property    0.126089
6    NP-00009      Start    0.171959
7    NP-00009      Casco    0.163557
  • 注意避坑:不要用split(' ')指定单空格作为分隔符,连续空格会拆分出大量空字符串导致错位;无参数的split()默认以任意连续空白字符为分隔符,自动忽略首尾空白,完全适配这种打印对齐的多空格场景。
  • 不需要提前对整个嵌套列表做astype(str)转换,逐段提取内容时直接做字符串处理即可,不会触发类型异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:48:56