Как сделать исключение в `convert_objects` в pandas dataframe - PullRequest
0 голосов
/ 22 мая 2018

Вот мой dtypes из моего набора данных, df.dtypes

customer_id                              int64
device_id                                object
...
email                                    object
email_counts                             object
...
white_collar_count                       object
dtype: object

Я конвертирую все в числовые значения с df = df.convert_objects(convert_numeric=True), а затем df.dtypes это

customer_id                              int64
device_id                                float64
...
email                                    float64
email_counts                             float64
...
white_collar_count                       float64
dtype: object

Iхотите сделать исключение для e-mail и device_id, поэтому df.dtypes равно

customer_id                              int64
device_id                                object
...
email                                    object
email_counts                             float64
...
white_collar_count                       float64
dtype: object

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Используйте difference для фильтрации столбцов в списке:

feature_exist = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'email':[5,3,6,9,2,4],
                   'F':list('aaabbb')}).astype(str)

print (feature_exist)
   A  B  C  D email  F
0  a  4  7  1     5  a
1  b  5  8  3     3  a
2  c  4  9  5     6  a
3  d  5  4  7     9  b
4  e  5  2  1     2  b
5  f  4  3  0     4  b

cols = feature_exist.columns.difference(['email'])
feature_exist[cols] = feature_exist[cols].convert_objects(convert_numeric=True)

print (feature_exist.dtypes)
A        object
B         int64
C         int64
D         int64
email    object
F        object
dtype: object
0 голосов
/ 22 мая 2018

Попробуйте -

exceptional_cols = ['email']
feature_exist = pd.concat([feature_exist.drop(email, axis=1).convert_objects(convert_numeric=True), feature_exist[exceptional_cols]], , axis=1, sort=False)

Объяснение

Бросьте cols, который вы не хотите конвертировать и конвертировать оставшиеся -

feature_exist.drop(email, axis=1).convert_objects(convert_numeric=True)

После этого добавьте обратно столбец, который вы уронили, с помощью concat.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...