można to zrobić w ten sposób:
# for Python 2
df.index = df.index.map(unicode)
# for Python 3 (the unicode type does not exist and is replaced by str)
df.index = df.index.map(str)
Jak, dlaczego chcesz kontynuować inaczej niż przy konwersji z int na float, jest to cecha numpy (biblioteka, na której oparte są pandy).
Każdy numpy tablica ma dtype, który jest w zasadzie maszyna typ jej elementów: w ten sposób, NumPy oferty bezpośrednio z rodzimych typów, nie z obiektami python, który wyjaśnia, jak to się tak szybko . Więc gdy zmieniasz typ z int64 na float64, numpy będzie rzutował każdy element w kodzie C.
Istnieje również specjalny dtype: obiekt, który zasadniczo dostarcza wskaźnik w kierunku obiektu Python.
Jeśli chcesz sznurki, ty więc trzeba korzystać z obiektu dtype. Ale użycie .astype(object)
nie dałoby ci odpowiedzi, której szukałeś: zamiast tego utworzyłby indeks z obiektem dtype, ale umieścił w nim obiekty pływające Python.
Tutaj, za pomocą mapy, możemy przekonwertować indeks na łańcuchy z odpowiedniej funkcji: numpy dostaje obiekty ciągów i zrozumieć, że indeks musi mieć obiekt dtype, ponieważ jest to jedyny dtype które mogą pomieścić sznurki.
To nie działa w Pythonie 3.5. Czy masz jakiś pomysł, dlaczego? –
Oryginalny plakat był w Pythonie 2. Typ 'unicode' już nie istnieje w Pythonie 3, a zamiast tego musi być użyty typ' str' (w zasadzie to, co zostało nazwane 'str' w Pythonie 2 jest nazywane' bajtami' w Python 3 i 'unicode' również stały się' str'). Aby uzyskać więcej informacji, zobacz [to pytanie] (http://stackoverflow.com/questions/19877306/nameerror-global-name-unicode-is-not-defined-in-python-3). – Arthur