Преобразовать объект в дату и время - PullRequest
0 голосов
/ 24 мая 2018

все,

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

         carry_dt product_type
0      2018-05-17         Swap
1      2018-05-17         Swap
2      2018-05-17         Swap
3      2018-05-17         Swap
4      2018-05-17         Swap
5      2018-05-17     Physical

carry_dt        object
product_type    object
dtype: object

Я пытаюсь выбрать кадр данных по дате:

allHoldings.loc[allHoldings['carry_dt']=='2018-05-17']

Iполучить пустой фрейм данных, почему это так?

Нужно ли конвертировать столбец 'carry_dt' в дату?

Любая помощь очень ценится

1 Ответ

0 голосов
/ 24 мая 2018

Ваш столбец dtype=object, поскольку он состоит из datetime данных, а также данных с одним или несколькими другими dtypes.

Вам следует преобразовать весь столбец в datetime:

allHoldings['carry_dt'] = pd.to_datetime(allHoldings['carry_dt'], errors='coerce')

Обратите внимание, что элементы, которые не могут быть преобразованы, будут преобразованы в NaT («Не время»).Если вы хотите заполнить их какой-либо датой по умолчанию, вы можете сделать это, используя pd.Series.fillna.Например:

allHoldings['carry_dt'] = allHoldings['carry_dt'].fillna(pd.to_datetime('today'))

Затем выполните сравнение, используя datetime:

allHoldings.loc[allHoldings['carry_dt']==pd.to_datetime('2018-05-17')]

Преимущества многократны:

  1. Вы увидите производительность и памятьулучшения, поскольку datetime серии хранятся в числовом базовом формате.
  2. Вы не сталкиваетесь с проблемами, пытаясь выровнять определенные строковые форматы.
...