Присвоение собственной даты дате Колонка формата ЧЧ: ММ: ССС.000 в Pandas - PullRequest
0 голосов
/ 05 марта 2020

У меня есть запись данных в файл CSV, который имеет временную карту в форме ЧЧ: ММ: SSS.000. Изображение необработанных данных . Когда я читаю эти данные в pandas через эту строку кода, автоматически добавляется сегодняшняя дата в столбец из функции parse_dates;

import pandas as pd

df = pd.read_csv('20-9-2019-ETH.csv', names=['Volume', 'Price', 'Time'],
                index_col=2, parse_dates=True)

df.head()

                          Volume    Price
Time        
2020-03-01 00:00:11.904  0.091683   217.60
2020-03-01 00:00:12.730  0.916826   217.60
2020-03-01 00:00:12.430  0.331441   217.60
2020-03-01 00:00:15.161  1.420000   217.59
2020-03-01 00:00:15.354  0.174274   217.57

Что мне нужно сделать, чтобы я мог указать, что дата, которую он должен использовать вместо дня, когда файл был создан? Или, может быть, я могу полностью удалить дату и просто оставить там метку времени? Либо решение в порядке, либо оба, так что я могу узнать больше! Спасибо!

1 Ответ

0 голосов
/ 05 марта 2020

Довольно простым решением было бы прочитать данные в виде строк, а затем выполнить синтаксический анализ, используя pandas.to_timedelta.

Пример кода:

from io import StringIO

import pandas as pd

raw_data = \
    """
    col_1,col_2
    a val,00:00:11.904
    another val,00:00:12.730
    a third val,00:00:12.430
    fourth val,00:00:15.161
    fifth val,00:00:15.354
    """

df = pd.read_csv(StringIO(raw_data), header=0, dtype={"col_1": "string", "col_2": "string"})

print(f"{df}\n\n{df.dtypes}\n\n")

df["col_2"] = pd.to_timedelta(df["col_2"])

print(f"{df}\n\n{df.dtypes}")

Вывод:

             col_1         col_2
0            a val  00:00:11.904
1      another val  00:00:12.730
2      a third val  00:00:12.430
3       fourth val  00:00:15.161
4        fifth val  00:00:15.354

    col_1    object
col_2        string
dtype: object


             col_1           col_2
0            a val 00:00:11.904000
1      another val 00:00:12.730000
2      a third val 00:00:12.430000
3       fourth val 00:00:15.161000
4        fifth val 00:00:15.354000

    col_1             object
col_2        timedelta64[ns]
dtype: object
...