如何在pandas数据帧中的`convert_objects`中进行异常处理

时间:2018-05-22 09:50:49

标签: python pandas dataframe

这是我的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

我想在e-maildevice_id上设置例外,因此df.dtypes

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

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

尝试 -

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并转换其余的< - p>

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

完成后,使用concat追加删除的列。

这将帮助您分离您不想转换的列。