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

Python生成CSV列表数据拆分适配模型训练技术问询

问题解决思路

1. 先解释报错原因

你写的df1.iloc[:, [1[0]]]是明显的语法错误——1是整数类型,不能用[0]下标访问,这行代码逻辑完全不成立。而且就算改对这行,也解决不了数值集中在单个单元格的问题,根源出在生成DataFrame的代码里。

2. 核心问题:生成DataFrame时未拆分数组

你原来的代码把数组f1直接作为列表的一个元素,转置后加入DataFrame,导致整个数组被当成单个单元格的值。要让每个数值对应单独单元格,必须把数组的每个元素拆成独立的列。

3. 修改生成DataFrame的代码

先修正原代码的缩进、冗余逻辑,再调整数组的处理方式:

import pandas as pd
import numpy as np

# 提前定义列名:第一列是标签,后面是数组每个元素对应的列
columns1 = ['label'] + [f'value_{i}' for i in range(512)]
df_split = pd.DataFrame(columns=columns1)

# 替换成你实际的遍历逻辑(比如遍历源DataFrame的行)
for index, row in your_source_df.iterrows():
    try:
        wav_file_name = row['wav_file']
        label = labels[row['label']]
        y = audio_vectors[wav_file_name]
        length = len(y)
        start, stop = 0, 512
        while stop <= length:
            f0 = y[start:stop]
            f1 = np.transpose(f0)  # 一维数组转置后无变化,可省略此步
            # 将标签和数组所有元素拼接成一行数据
            row_data = [label] + list(f1)
            # 追加到DataFrame(用concat替代已弃用的append)
            df_split = pd.concat([df_split, pd.DataFrame([row_data], columns=columns1)], ignore_index=True)
            start, stop = stop, stop + 512
    except Exception as e:
        print(f'发生异常: {e}')

# 保存为CSV
df_split.to_csv('data/pre_processed/test2.csv', index=False)

关键修改点:

  • 提前定义完整列名,确保每个数组元素对应一列
  • 将标签和数组元素拼接成列表,让每个元素对应DataFrame的一列
  • 移除冗余的split_test变量,简化逻辑
  • 使用pd.concat替代已弃用的append方法

4. 验证效果

修改后生成的CSV中,label列存储标签,后续每列对应数组的一个数值,所有数值都在独立单元格中,可直接用于模型训练,无需额外拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:06:29