所有显示为字符串的熊猫列

时间:2019-12-17 04:25:37

标签: python pandas

我从数据库中获取数据,我怀疑其中的所有数据都只是设置为字符串而不是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,但是所有内容都显示为非数字。

我可以做些什么来检测数值吗?

1 个答案:

答案 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)