我从数据库中获取数据,我怀疑其中的所有数据都只是设置为字符串而不是float,int等。当我将数据导入pandas数据框时,它们全部显示为字符串。
print("products.dtypes")
product_category_name object
product_description_lenght object
product_height_cm object
product_id object
product_length_cm object
product_name_lenght object
product_photos_qty object
product_weight_g object
product_width_cm object
dtype: object
或
print (products.applymap(type))
结果:
product_category_name product_description_lenght product_height_cm \
0 <class 'str'> <class 'str'> <class 'str'>
1 <class 'str'> <class 'str'> <class 'str'>
2 <class 'str'> <class 'str'> <class 'str'>
3 <class 'str'> <class 'str'> <class 'str'>
4 <class 'str'> <class 'str'> <class 'str'>
... ... ... ...
32946 <class 'str'> <class 'str'> <class 'str'>
32947 <class 'str'> <class 'str'> <class 'str'>
32948 <class 'str'> <class 'str'> <class 'str'>
32949 <class 'str'> <class 'str'> <class 'str'>
32950 <class 'str'> <class 'str'> <class 'str'>
product_id product_length_cm product_name_lenght product_photos_qty \
0 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
1 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
2 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
3 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
4 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
... ... ... ... ...
32946 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
32947 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
32948 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
32949 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
32950 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
product_weight_g product_width_cm
0 <class 'str'> <class 'str'>
1 <class 'str'> <class 'str'>
2 <class 'str'> <class 'str'>
3 <class 'str'> <class 'str'>
4 <class 'str'> <class 'str'>
... ... ...
32946 <class 'str'> <class 'str'>
32947 <class 'str'> <class 'str'>
32948 <class 'str'> <class 'str'>
32949 <class 'str'> <class 'str'>
32950 <class 'str'> <class 'str'>
[32951 rows x 9 columns]
当我查看数据时,有def。那里的数字值。我尝试采用一个值并将其加1毫无用处。
products['test'] = products['product_description_lenght'] + 1
TypeError: can only concatenate str (not "int") to str
我尝试使用str.isnumeric,但是所有内容都显示为非数字。
我可以做些什么来检测数值吗?
答案 0 :(得分:1)
尝试使用以下内容:
import numbers
products['test'] = pd.to_numeric(products['product_description_lenght'], errors='ignore').apply(lambda x: x + 1 if isinstance(x, numbers.Number) else x)