Преобразовать строку в формат соответствующего индекса - PullRequest
1 голос
/ 21 сентября 2019
  1. У меня есть df формы 3000,125
  2. Первый ряд моего df представляет тикеры облигаций
  3. 2-й ряд представляет дату, когда они были проданы
  4. Мой индекс - это исторический временной ряд, а значения в df представляют дневные цены на акции, например:

                    AAPL         GOOGLE         IBM
                  16/02/2018  15/03/2022   22/08/2020
    
    2019/jan/02  5             4              3
    2019/jan/03. 4             4              4
    2019/jan/04. 4             4              5
    2019/jan/05  3             5              2 
    2012/Mar/03  10            20             22
    

Я хотел бы запустить цикл на значениях, однакодля этого индекс и df.iloc[0] или первая строка должны быть в одном формате.

Мне удалось преобразовать индекс в формат даты и времени, используя следующий код без проблемы:

  dftest2.index =  pd.to_datetime(dftest2.index, format='%Y%m%d')

Проблема состоит в том, что я хочу преобразовать первую строку dfсоответствовать формату индекса.Первая строка находится в строковом формате в форме '%d/%m/Y%'), однако для того, чтобы она соответствовала индексу, она должна быть в '%Y%m%d'.

Я использовал следующий код, чтобы он соответствовал формату даты индекса:

dftest2.iloc[0] = pd.to_datetime(dftest2.iloc[0]).dt.strftime('%Y-%m-%d')

И запуск приведенного ниже кода также приводит к следующей ошибке:

dftest2.iloc[0] = pd.to_datetime(dftest2.iloc[0]).datetime.strptime('%Y-%m-%d')
AttributeError: 'Series' object has no attribute 'datetime'

Узнайте, как теперь преобразовать это в индекс соответствия формата даты и времени.Предыдущие попытки преобразования в datetime привели к тому, что строка была преобразована в формат int с бессмысленными числами, 187745300000 и т. Д.

Как преобразовать строку в соответствие с индексом.Ошибка, которую я получаю сейчас при запуске цикла:

 TypeError: '>' not supported between instances of 'numpy.ndarray' and 'str'

Я просмотрел весь стекопоток на предмет возможных вариантов моей проблемы, но без успеха.

1 Ответ

0 голосов
/ 22 сентября 2019

IIUC, вы просто хотите превратить первую строку в объект datetime для дальнейших операций?

, если это так, это сработало для меня -

test_ = pd.to_datetime(df.iloc[0].str.replace("*", "").str.replace(".", ""))
print(test_)

AAPL     2017-04-01
Google   2021-02-03
IBM      2020-03-03
Name: 0, dtype: datetime64[ns]

если вы пройдете метод .strftime, вы получите объект.

надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...