将对象转换为日期时间

时间:2018-05-24 13:00:58

标签: python python-3.x datetime dataframe series

所有

我有一个如下所示的数据框:

         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']

我得到一个空数据框,为什么会这样?

我是否需要将列'carry_dt'转换为日期?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

您的专栏是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. 您不会遇到尝试调整特定字符串格式的问题。