ValueError: could not convert string to float: '$257.26' - sklearn.tree.DecisionTreeClassifier - Python

ValueError: could not convert string to float: '$257.26' - sklearn.tree.DecisionTreeClassifier - Python

我正在尝试让我的模型拟合从 Kaggle 导入的苹果股票数据中的值。

这里有一个 link 数据:

https://www.kaggle.com/tarunpaparaju/apple-aapl-historical-stock-data

这是我的代码:

import pandas as pd
from sklearn.tree import DecisionTreeClassifier

stock_data = pd.read_csv(r"C:\Users\renuc\Documents\Rohan\Jupyter\Apple Stock\apple_stock_history.csv", skipinitialspace = True)
X = stock_data.drop(columns=['Date', 'Close/Last', 'High', 'Low'])
y = stock_data.drop(columns=['Date', 'Volume', 'Open'])

model = DecisionTreeClassifier()
model.fit(X, y)

但是,我收到一条错误消息 ValueError: could not convert string to float: '7.26'。我相信这是因为值之前的美元符号,但我不确定如何从数据库中的所有值中删除美元符号。

(我正在使用 Jupyter)

对于一列:

stock_data = stock_data[" Close/Last"].str.strip(" $")

更通用的解决方案(适用于除 Date Volume 之外的每一列):

stock_data = stock_data.drop(["Date", " Volume"], axis=1).apply(lambda x: x.str.strip(" $"))

编辑: 如果要保留所有列:

stock_data.drop(["Date", " Volume"], axis=1) = stock_data.drop(["Date", " Volume"], axis=1).apply(lambda x: x.str.strip(" $"))

在此之后,您可以删除任何您想要的列:

stock_data.drop(["Date"], axis=1, inplace=True)