Chciałbym zaimportować następujący plik csv jako ciągi, a nie jako int64. Pandy read_csv automatycznie konwertuje go na int64, ale potrzebuję tej kolumny jako ciągu.
ID
00013007854817840016671868
00013007854817840016749251
00013007854817840016754630
00013007854817840016781876
00013007854817840017028824
00013007854817840017963235
00013007854817840018860166
df = read_csv('sample.csv')
df.ID
>>
0 -9223372036854775808
1 -9223372036854775808
2 -9223372036854775808
3 -9223372036854775808
4 -9223372036854775808
5 -9223372036854775808
6 -9223372036854775808
Name: ID
Niestety użycie konwerterów daje ten sam rezultat.
df = read_csv('sample.csv', converters={'ID': str})
df.ID
>>
0 -9223372036854775808
1 -9223372036854775808
2 -9223372036854775808
3 -9223372036854775808
4 -9223372036854775808
5 -9223372036854775808
6 -9223372036854775808
Name: ID
Odpowiedzi:
Chcę tylko powtórzyć, że to zadziała w pandach> = 0.9.1:
In [2]: read_csv('sample.csv', dtype={'ID': object}) Out[2]: ID 0 00013007854817840016671868 1 00013007854817840016749251 2 00013007854817840016754630 3 00013007854817840016781876 4 00013007854817840017028824 5 00013007854817840017963235 6 00013007854817840018860166
Tworzę również problem dotyczący wykrywania przepełnień całkowitych.
EDYCJA: Zobacz rozdzielczość tutaj: https://github.com/pydata/pandas/issues/2247
źródło
dtype = str
.Prawdopodobnie nie jest to najbardziej elegancki sposób, aby to zrobić, ale spełnia swoje zadanie.
In[1]: import numpy as np In[2]: import pandas as pd In[3]: df = pd.DataFrame(np.genfromtxt('/Users/spencerlyon2/Desktop/test.csv', dtype=str)[1:], columns=['ID']) In[4]: df Out[4]: ID 0 00013007854817840016671868 1 00013007854817840016749251 2 00013007854817840016754630 3 00013007854817840016781876 4 00013007854817840017028824 5 00013007854817840017963235 6 00013007854817840018860166
Po prostu zastąp
'/Users/spencerlyon2/Desktop/test.csv'
ścieżką do plikuźródło
Od pandy 1.0 stało się to znacznie prostsze. Spowoduje to odczytanie kolumny „ID” jako „ciąg znaków”:
pd.read_csv('sample.csv',dtype={'ID':'string'})
Jak widać w tym przewodniku dla początkujących , wprowadzono 'string' dtype (zanim łańcuchy były traktowane jako dtype 'object').
źródło