У меня есть столбец в моем наборе данных, который имеет объект dtype, но на самом деле является целым числом. Как мне преобразовать его в int и считать в этом столбце?

A  B
1  2,3,45
2  3,76,455,4
3  2,22,67,78,2

Проблема здесь в том, что в этом столбце B есть dtype = object, который необходимо преобразовать в int, чтобы я мог узнать, каково количество в B? Я пытался с помощью:

B.astype(str).astype(int) 

Но это дает мне ошибку «ValueError: недопустимый литерал для int () с основанием 10:« 2,3,45 »». Может кто-нибудь сказать мне, как я могу решить это?

0
Sahil 26 Авг 2017 в 17:49

3 ответа

Лучший ответ

Вы можете оставить B в виде строки и по-прежнему получать счет, считая , запятых.

In [118]: df.assign(C=df.B.str.count(',').add(1))
Out[118]:
   A             B  C
0  1        2,3,45  3
1  2    3,76,455,4  4
2  3  2,22,67,78,2  5
1
Zero 26 Авг 2017 в 14:52

Или ты можешь просто

df.B.apply(lambda x :len(x.split(',')))

Out[117]: 
0    3
1    4
2    5
Name: B, dtype: int64
0
YOBEN_S 27 Авг 2017 в 01:24

Вы можете рассчитывать, используя регулярное выражение строки.

df.B.str.count('\w+')
-1
PIG 26 Авг 2017 в 15:49