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

如何将重塑后的字符串DataFrame转为整数数组适配SVM算法?

问题描述

现有一个包含整数值的DataFrame,需要将其重塑为新结构:新的vector列每行由原DataFrame每列的连续3行数据组合而成。目前已通过代码实现重塑,但生成的vector列是字符串类型,无法直接转换为整数数组用于SVM算法。

现有实现代码:

import pandas as pd
data = pd.DataFrame({'column1': [123, 456, 789, 321, 654, 987, 1234, 45678],
                     'column2': [123, 456, 789, 321, 654, 987, 1234, 45678]})
data=data.astype(str) #string conv.
n = len(data) // 3 #reshaping to new DF
# Create a new DataFrame without commas
X = pd.DataFrame({
    'vector': [' '.join(data.iloc[i:i+3, :].values.flatten()) for i in range(0, len(data), 3)]
})

输出的X结构:

vector
0  123 123 456 456 789 789
1  321 321 654 654 987 987
2    1234 1234 45678 45678
解决方案

方案1:从源头避免字符串转换(推荐)

直接基于原始整数数据处理,跳过字符串转换步骤,生成的结构本身就是数值型,可直接转为numpy数组供SVM使用:

import pandas as pd
import numpy as np

data = pd.DataFrame({'column1': [123, 456, 789, 321, 654, 987, 1234, 45678],
                     'column2': [123, 456, 789, 321, 654, 987, 1234, 45678]})

groups = []
# 按每3行一组遍历,每组展平为一维整数数组
for i in range(0, len(data), 3):
    group_data = data.iloc[i:i+3, :].values.flatten()
    groups.append(group_data)

# 转为DataFrame(可选)
X = pd.DataFrame({'vector': groups})
# 直接得到SVM可用的二维整数数组
svm_input = np.array(groups)

注意:最后一组只有2行,展平后长度为4,和前两组的6不一致。如果SVM要求输入维度统一,可根据需求补全(比如补0)或过滤掉最后一组。

方案2:转换现有字符串列

如果必须基于已生成的字符串列X处理,可拆分字符串并转换为整数数组:

# 将字符串列转为整数列表
X['vector'] = X['vector'].apply(lambda s: list(map(int, s.split())))
# 转为numpy数组
svm_input = np.array(X['vector'].tolist())

同样需要处理最后一组长度不一致的问题,确保符合SVM的输入要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:43