Подтвердить что ты не робот

Pandas: изменить тип данных Series на String

Я использую Pandas 'ver 0.12.0' с Python 2.7 и имею следующий кадр данных:

df = pd.DataFrame({'id' : [123,512,'zhub1', 12354.3, 129, 753, 295, 610],
                    'colour': ['black', 'white','white','white',
                            'black', 'black', 'white', 'white'],
                    'shape': ['round', 'triangular', 'triangular','triangular','square',
                                        'triangular','round','triangular']
                    },  columns= ['id','colour', 'shape'])

Серия id состоит из целых чисел и строк. Его dtype по умолчанию - object. Я хочу преобразовать все содержимое id в строки. Я попробовал astype(str), который выводит результат ниже.

df['id'].astype(str)
0    1
1    5
2    z
3    1
4    1
5    7
6    2
7    6

1) Как преобразовать все элементы id в String?

2) В конечном итоге я использую id для индексирования для данных. Будет ли иметь индексы String в фрейме данных замедлить работу по сравнению с наличием целочисленного индекса?

4b9b3361

Ответ 1

Вы можете преобразовать все элементы id в str с помощью apply

df.id.apply(str)

0        123
1        512
2      zhub1
3    12354.3
4        129
5        753
6        295
7        610

Редактировать по OP:

Я думаю, что проблема была связана с версией Python (2.7.), это сработало:

df['id'].astype(basestring)
0        123
1        512
2      zhub1
3    12354.3
4        129
5        753
6        295
7        610
Name: id, dtype: object

Ответ 2

Вы должны назначить его, например:

df['id']= df['id'].astype(str)

Ответ 3

Лично у меня ничего не вышло. Что сделал:

new_str = [str(x) for x in old_obj][0]