pandas TypeError:仅当所有输入要素都具有字符串名称,但输入的列名类型为['str','str_']时,才支持要素名称

plicqrtu  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(188)

当我尝试将scikit-learn的StandardScaler放入我的pandas数据框时,我得到以下错误:
TypeError:只有当所有输入功能都有字符串名称时才支持功能名称,但您的输入具有['str','str_']作为功能名称/列名称类型。如果您希望存储和验证功能名称,则必须将它们全部转换为字符串,例如使用X.columns = X. columnes.astype(str)。否则,可以从输入数据中删除要素/列名,或将它们全部转换为非字符串数据类型。
此错误发生在代码的这一部分:

scaler.fit(data[map_keys])

字符串
这里data是一个dataframe,map_keys是一个只包含字符串值的列表。以下是数据的一个示例:
>> data[map_keys].head()输出:

loss  revenue  visit_number  ... 
1964      1.0      0.0           1.0  ...
1402      2.0      0.0           1.0  ...
2539      2.0      0.0           1.0  ...
86        2.0      0.0           1.0  ...
808       2.0      0.0           2.0  ...


为了解决这个问题,我所做的是将map_keys中的所有元素转换为str类型:

map_keys = [str(k) for k in map_keys]


因为当我第一次遇到这个问题时,列表中的一些元素的类型是np.str_。但错误仍然存在……请注意,我在这段代码中使用的scikit-learn版本是1.2.1

5m1hhzi4

5m1hhzi41#

我使用错误消息中包含的一行代码重命名了列:

X.columns = X.columns.astype(str)

字符串
而且成功了

相关问题