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 в фрейме данных замедлить работу по сравнению с наличием целочисленного индекса?
Ответы
Ответ 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]