Mam ramkę danych z kluczami alfa-numerycznymi, które chcę zapisać jako CSV i przeczytać później. Z różnych powodów muszę jawnie odczytać tę kluczową kolumnę jako format ciągów, mam klucze, które są ściśle numeryczne lub nawet gorsze, takie jak: 1234E5, które Pandy interpretują jako zmiennoprzecinkowe. To oczywiście czyni klucz całkowicie bezużytecznym.Pandy czytające CSV jako typ łańcucha
Problem polega na tym, że określam ciąg dtype dla ramki danych lub dowolnej z jej kolumn, po prostu odrzucam śmieci. Mam przykładowy kod tutaj:
df = pd.DataFrame(np.random.rand(2,2),
index=['1A', '1B'],
columns=['A', 'B'])
df.to_csv(savefile)
ramka danych wygląda następująco:
A B
1A 0.209059 0.275554
1B 0.742666 0.721165
Potem przeczytałem go tak:
df_read = pd.read_csv(savefile, dtype=str, index_col=0)
a wynik jest:
A B
B ( <
Czy to jest problem z moim komputerem r, czy coś, co robię źle tutaj, czy tylko błąd?
Myślę, że '' read_csv'' powinien: a) podnieść na nieprawidłowym przekazanym dtype, a b) po prostu przetłumaczyć '' str'' dtype na '' object'', otworzyć problem? – Jeff
https://github.com/pydata/pandas/issues/3795 –
Dziękuję, spróbuję. Już wspomniałem, że nie mogę po prostu go wczytać bez określenia typu, Pandy ciągle pobierają klucze numeryczne, które muszą być ciągami i parsują je jako spacje. Tak jak powiedziałem w tym przykładzie, klucz taki jak: 1234E5 jest brany jako: 1234.0x10^5, co nie pomaga mi w najmniejszym stopniu, gdy idę, aby to sprawdzić. – daver