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

如何将特定结构的Numpy数组转换为DataFrame?附示例

将嵌套NumPy数组转换为指定格式的DataFrame

处理思路

  1. 遍历NumPy数组中的每个样本子数组
  2. 对每个样本内的每一行数据提取键值对:
    • 跳过最后一行无意义的Name: x, dtype: object内容
    • 将每行字符串按第一个空格分割(避免键名中的空格被拆分),分别去除前后空白后得到键和对应值
  3. 将每个样本的键值对转为字典,最后把所有字典传入pd.DataFrame生成目标格式

代码实现

import numpy as np
import pandas as pd

# 输入的NumPy数组
arr = np.array([[['ID                                     0x4501'],
        ['Delivery_person_ID                   S13DEL02'],
        ['Delivery_person_Age                   21.0000'],
        ['City                                    Urban'],
        ['Time_taken (min)                      24.0000'],
        ['Name: 0, dtype: object']],

       [['ID                                     0xb329'],
        ['Delivery_person_ID                  ES18DEL02'],
        ['Delivery_person_Age                 32.000000'],
        ['City                            Metropolitian'],
        ['Time_taken (min)                    33.000000'],
        ['Name: 1, dtype: object']]], dtype=object)

# 处理单个样本的函数
def process_sample(sample):
    data_dict = {}
    # 遍历样本行,跳过最后一行无效内容
    for item in sample[:-1]:
        # 取出字符串并拆分键值
        key_str, value_str = item[0].split(maxsplit=1)
        key = key_str.strip()
        value = value_str.strip()
        # 可选:将Time_taken (min)简化为Time_taken,匹配期望格式
        if key == 'Time_taken (min)':
            key = 'Time_taken'
        data_dict[key] = value
    return data_dict

# 批量处理所有样本
processed_list = [process_sample(sample) for sample in arr]

# 转换为DataFrame
result_df = pd.DataFrame(processed_list)
print(result_df)

输出结果

ID Delivery_person_ID Delivery_person_Age           City Time_taken
0  0x4501          S13DEL02               21.0000          Urban    24.0000
1  0xb329         ES18DEL02              32.000000  Metropolitian   33.000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:58:03