Python 如何重塑系列以在StandardScaler中使用它

Python 如何重塑系列以在StandardScaler中使用它,python,scikit-learn,Python,Scikit Learn,我正在尝试对我处理的一些数据执行一个时间序列(LSTM),现在我正在尝试使用sklearn的StandScaler对其进行缩放。以下是我对数据的初步预处理: import json import numpy as np import seaborn as sns import matplotlib.pyplot as plt import os import pandas as pd import sklearn import torch import torch.nn as nn import

我正在尝试对我处理的一些数据执行一个时间序列(LSTM),现在我正在尝试使用sklearn的StandScaler对其进行缩放。以下是我对数据的初步预处理:

import json
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import os
import pandas as pd
import sklearn
import torch
import torch.nn as nn
import torch.nn.functional as F

data = pd.read_csv('./data/bitstampUSD_1-min_data_2012-01-01_to_2020-04-22.csv')
data.isnull().values.any()

from datetime import datetime
data.dropna(subset = ["Weighted_Price"], inplace=True)
data.reset_index(drop=True, inplace=True) ##Too many null values so wanted to drop it and reindex


data['date'] = pd.to_datetime(data['Timestamp'],unit='s').dt.date
group = data.groupby('date')
daily_price = group['Weighted_Price'].mean()

daily_price.head()

df_train= daily_price[0:1800] #60%
df_train.shape
df_validation= daily_price[1801:2500] #80%
df_validation.shape
df_test= daily_price[2500:] #60%
df_test.shape
列车、验证和测试集的输出分别为(1800)、699和(533)

当我尝试通过以下操作运行standardscaler时:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
train_arr = scaler.fit_transform(df_train)
val_arr = scaler.transform(df_validation)
test_arr = scaler.transform(df_test)
我得到了以下错误:

Expected 2D array, got 1D array instead:
array=[  4.47160287   4.80666667   5.         ... 759.70635334 751.50645584
 755.52545612].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample
我尝试按以下方式重做前面的代码:

from sklearn.preprocessing import StandardScaler
df_train_2D = df_train.reshape(1,-1)
df_validation_2D = df_validation.reshape(1,-1)
df_test_2D = df_test.reshape(1,-1)
scaler = StandardScaler()
train_arr = scaler.fit_transform(df_train_2D)
val_arr = scaler.transform(df_validation_2D)
test_arr = scaler.transform(df_test_2D)
但我仍然会遇到错误:“系列”对象没有“重塑”属性

我不知道如何将其转换为可接受的阵列进行扩展。somoene能帮我解决这个问题吗?谢谢

DataFrame.Reformate()是

您需要重塑数据帧或数据系列的值,您可以通过添加来获得这些值。值:

df.values.reshape(1,-1)
或者,在您的情况下:

df_validation_2D = df_validation.values.reshape(1,-1)