Python 3.x 按日期获取行,而不考虑表中日期的格式

Python 3.x 按日期获取行,而不考虑表中日期的格式,python-3.x,pandas,Python 3.x,Pandas,我有以下资料: Col1,ColDate a,2020-09-11 08:43:00 b,2020-09-12 09:43:00 c,13-09-2020 09:43:00 d,09/16/2020 10:43:00 e,09/19/2020 12:43:00 f,09/12/2020 15:43:00 目的是获取9月11日至9月13日之间的所有行,无论格式如何。熊猫 我正在尝试以下方法: df[df["ColDate"].between('11-09-2020','13-

我有以下资料:

Col1,ColDate
a,2020-09-11 08:43:00
b,2020-09-12 09:43:00
c,13-09-2020 09:43:00
d,09/16/2020 10:43:00
e,09/19/2020 12:43:00
f,09/12/2020 15:43:00
目的是获取9月11日至9月13日之间的所有行,无论格式如何。熊猫

我正在尝试以下方法:

df[df["ColDate"].between('11-09-2020','13-09-2020')]

我得到一个空数据框。

请检查代码段。您可以先将Coldate转换为
pd.to\u datetime
格式,然后像这样在其上应用掩码

df['ColDate'] = pd.to_datetime(df['ColDate'])
mask = (df['ColDate'] > '2020-09-11') & (df['ColDate'] <='2020-09-13')
df = df.loc[mask]

请检查代码片段。您可以先将Coldate转换为
pd.to\u datetime
格式,然后像这样在其上应用掩码

df['ColDate'] = pd.to_datetime(df['ColDate'])
mask = (df['ColDate'] > '2020-09-11') & (df['ColDate'] <='2020-09-13')
df = df.loc[mask]
你可以试试这个

 df[pd.to_datetime(df['ColDate']).dt.strftime('%d-%m-%Y').between('11-09-2020','13-09-2020')]

   Col1              ColDate
0    a  2020-09-11 08:43:00
1    b  2020-09-12 09:43:00
2    c  13-09-2020 09:43:00
5    f  09/12/2020 15:43:00
但是很难说哪一个将被视为月份和日期,因为日期格式混乱。

你可以试试这个

 df[pd.to_datetime(df['ColDate']).dt.strftime('%d-%m-%Y').between('11-09-2020','13-09-2020')]

   Col1              ColDate
0    a  2020-09-11 08:43:00
1    b  2020-09-12 09:43:00
2    c  13-09-2020 09:43:00
5    f  09/12/2020 15:43:00

但是很难说哪一个将被视为月份和日期,因为日期格式混乱。

谢谢你的回答,但是我如何使用
dd-mm-yyyy格式
?还有一行命令会更有用谢谢你的回答但是我如何使用
dd-mm-yyyy格式
?而且一行命令会更有用谢谢。这很有效。如果我只有一个日期,我应该使用什么来代替之间的
?一个日期是上限还是下限?对不起。我的意思是它应该属于某个特定的day@Karthik,则在
之间使用
是不可能的。我们必须使用您的解决方案中的逻辑运算符。@cs95新年快乐!我真的很喜欢这个答案:)谢谢。这很有效。如果我只有一个日期,我应该使用什么来代替
之间的
?一个日期是上限还是下限?对不起。我的意思是它应该属于某个特定的day@Karthik,则在
之间使用
是不可能的。我们必须使用您的解决方案中的逻辑运算符。@cs95新年快乐!我真的很喜欢这个答案:)