出现
AttributeError: 'tuple' object has no attribute 'drop'
for category in categories:
train_data: tuple[Any] = sales_data_train[sales_data_train['分类名称'] == category],
test_data = sales_data_test[sales_data_test['分类名称'] == category]
X_train = train_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_train = train_data['销量(千克)']
X_test = test_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_test = test_data['销量(千克)']
出现
AttributeError: 'tuple' object has no attribute 'drop'
问题出在这行代码:
train_data: tuple[Any] = sales_data_train[sales_data_train['分类名称'] == category],
你在这行末尾加了一个逗号,导致 train_data
成为一个元组,而不是你期望的 DataFrame
解决方案是删除该逗号,代码如下:
for category in categories:
train_data: Any = sales_data_train[sales_data_train['分类名称'] == category]
test_data = sales_data_test[sales_data_test['分类名称'] == category]
X_train = train_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_train = train_data['销量(千克)']
X_test = test_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_test = test_data['销量(千克)']
这样,train_data
应该是一个 DataFrame 对象,具有 drop
方法
【以下回答由 GPT 生成】
问题分析: 在上述代码中,错误发生在X_train = train_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
这行代码上。错误提示为:AttributeError: 'tuple' object has no attribute 'drop'。
问题解决: 该错误的原因是我们将train_data
定义为一个元组(tuple),而元组没有drop
方法。解决这个问题的方法是将train_data
定义为一个数据框(DataFrame)。
以下是修改后的代码:
import pandas as pd
# 将train_data定义为DataFrame而不是元组
train_data = sales_data_train.loc[sales_data_train['分类名称'] == category].copy()
test_data = sales_data_test.loc[sales_data_test['分类名称'] == category].copy()
X_train = train_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_train = train_data['销量(千克)']
X_test = test_data.drop(['销售日期', '销量(千克)', '分类名称'], axis=1)
y_test = test_data['销量(千克)']
请注意,我在代码开头添加了import pandas as pd
语句,这是为了使用pandas
库中的DataFrame
和其他相关方法。
此外,为了解决数据引用导致的问题,我还添加了.copy()
方法来确保train_data
和test_data
是独立的副本,而不是对原始数据的引用。
希望这个解决方案可以解决你的问题。如果你还有任何疑问,请随时提问。