Czytam w pliku csv z wieloma kolumnami z datą i godziną. Musiałbym ustawić typy danych po wczytaniu pliku, ale czasy dat wydają się być problemem. Na przykład:
headers = ['col1', 'col2', 'col3', 'col4']
dtypes = ['datetime', 'datetime', 'str', 'float']
pd.read_csv(file, sep='\t', header=None, names=headers, dtype=dtypes)
Gdy run wyświetla błąd:
Błąd typu: niezrozumiany typ danych „datetime”
Konwersja kolumn po fakcie za pomocą pandas.to_datetime () nie jest opcją. Nie wiem, które kolumny będą obiektami datetime. Te informacje mogą się zmieniać i pochodzą z wszystkiego, co informuje o mojej liście typów.
Alternatywnie, próbowałem załadować plik csv za pomocą numpy.genfromtxt, ustawić dtypes w tej funkcji, a następnie przekonwertować na pandas.dataframe, ale zniekształca dane. Każda pomoc jest mile widziana!
pandas.core.datetools.to_datetime
jest przestarzałe, użyjpd.datetools.to_datetime
zamiast tego. w ten sposób:date_parser = pd.to_datetime
converters
parametr, w którym możesz określić, które kolumny mają które konwertery. parse_dates jest pomocny i obsługuje złe dane, ale jest wolniejszy, ponieważ testuje i wnioskuje o każdej wartości gist.github.com/gjreda/7433f5f70299610d9b6bIstnieje
parse_dates
parametr, dlaread_csv
którego można zdefiniować nazwy kolumn, które mają być traktowane jako daty lub godziny:źródło
Możesz spróbować przekazać rzeczywiste typy zamiast ciągów.
Ale będzie to naprawdę trudne do zdiagnozowania bez żadnych danych do majstrowania.
I naprawdę, prawdopodobnie chcesz, aby pandy analizowały daty na znaczniki czasu, więc może to być:
źródło
Próbowałem użyć opcji dtypes = [datetime, ...], ale
Napotkałem następujący błąd:
Jedyną zmianą, jaką musiałem dokonać, było zastąpienie datetime przez datetime.datetime
źródło
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'