Проверьте, состоит ли столбец из чисел в строковом типе данных

#python #pandas #dataframe

#python #pandas #dataframe

Вопрос:

Ниже приведен сценарий для упрощенной версии рассматриваемого df:

 import pandas as pd

df = pd.DataFrame({ 
               'feature'       : ['cd_player', 'sat_nav', 'sub_woofer', 'usb_port','cd_player', 'sat_nav', 'sub_woofer', 'usb_port','cd_player', 'sat_nav', 'sub_woofer', 'usb_port'],
               'feature_value' : ['1','1','0','4','1','0','0','1','1','1','1','0'],
               'feature_colour' : ['red','orange','yellow','green','blue','indigo','violet','red','orange','yellow','green','blue']
                 })
df
    feature     feature_value   feature_colour
0   cd_player   1               red
1   sat_nav     1               orange
2   sub_woofer  0               yellow
3   usb_port    4               green
4   cd_player   1               blue
5   sat_nav     0               indigo
6   sub_woofer  0               violet
7   usb_port    1               red
8   cd_player   1               orange
9   sat_nav     1               yellow
10  sub_woofer  1               green
11  usb_port    0               blue

df.dtypes

feature          object
feature_value    object
dtype: object
  

Я хочу найти способ найти все столбцы с числовыми значениями и преобразовать их типы данных в целые числа и / или числа с плавающей точкой. Конечно, в этом примере это легко сделать вручную, однако рассматриваемый DF имеет ~ 50 потенциальных столбцов с числовыми значениями, но поскольку все они имеют object dtypes, было бы довольно неэффективно определять вручную.

ПРЕДПОЛАГАЕМЫЙ РЕЗУЛЬТАТ:

 df.dtypes

feature          object
feature_value     int64
dtype: object
  

Любая помощь была бы с благодарностью принята.

Ответ №1:

Попробуйте это:

 df = df.apply(lambda x: pd.to_numeric(x, errors='ignore'))
df.dtypes
  

Комментарии:

1. Это сработало так, как я надеялся, большое спасибо за вашу помощь!