熊猫:不能将序列乘以'str'类型的非int

问题描述 投票:0回答:1

看到一般问题的几个答案,我已经使用了一些建议的解决方案,但仍然卡住了。

我有以下代码:

name = ['Sepal-length', 'Sepal-width', 'Petal-length', 'Petal-width', 'Class']
iris_ds = pd.read_csv(url, names=name)

cols=iris_ds.columns.drop('Class')
iris_ds[cols]=iris_ds[cols].apply(pd.to_numeric, errors='coerce')

.......

iris_ds['Sepal-area'] = iris_ds.eval('Sepal-width' * 'Sepal-length')  
print(iris_ds.head(20))

但是,当我运行第二部分的脚本时,我得到以下内容:

回溯(最近一次调用最后一次):文件“Iris_Data_set1.py”,第67行,在iris_ds ['Petal-area'] = iris_ds.eval('Petal-width'*'Petal-length')TypeError:不能相乘序列由'str'类型的非int

数据类型如下:

萼长float64

萼宽float64

花瓣长度为64

花瓣宽度为float64

类对象

dtype:对象

有关如何解决此问题的任何建议,以便我可以进行乘法运算?

python pandas python-3.7
1个回答
1
投票

有什么理由你不能这样做:

iris_ds['Sepal-area'] = iris_ds.Sepal-width * iris_ds.Sepal-length

我认为可能有两个问题。你可能不应该使用Sepal-length作为列名,而应该使用Sepal_length(并将其应用于你的其他变量),做出答案:

iris_ds['Sepal_area'] = iris_ds.Sepal_width * iris_ds.Sepal_length
© www.soinside.com 2019 - 2024. All rights reserved.