所有
我有一个如下所示的数据框:
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'
转换为日期?
非常感谢任何帮助
答案 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')]
优点是多方面的:
datetime
系列以数字底层格式存储。