Python 熊猫过滤日期

Python 熊猫过滤日期,python,pandas,Python,Pandas,我有一个如下所示的数据帧 +-----------+-------+----------+--+--+ | Date | OPP | Result | | | +-----------+-------+----------+--+--+ | Sat 11/16 | @DAL | L110-102 | | | +-----------+-------+----------+--+--+ | Wed 11/13 | @POR | W114-106 | | | +--

我有一个如下所示的数据帧

+-----------+-------+----------+--+--+
| Date      | OPP   | Result   |  |  |
+-----------+-------+----------+--+--+
| Sat 11/16 | @DAL  | L110-102 |  |  |
+-----------+-------+----------+--+--+
| Wed 11/13 | @POR  | W114-106 |  |  |
+-----------+-------+----------+--+--+
| Mon 11/11 | @LAC  | L98-88   |  |  |
+-----------+-------+----------+--+--+
| Sun 11/10 | @LAL  | W113-104 |  |  |
+-----------+-------+----------+--+--+
| Fri 11/8  | @NO   | W122-104 |  |  |
+-----------+-------+----------+--+--+
| Wed 11/6  | vsSAC | W124-120 |  |  |
+-----------+-------+----------+--+--+
| Sat 11/2  | @MIL  | L115-105 |  |  |
+-----------+-------+----------+--+--+
我正在尝试筛选日期>\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

Ie这是我尝试过的,但没有过滤所有大于11/10太阳的日期

d1=d1[(d1['Date']>'Sun 11/10')]

更新

我的专栏现在看起来像这样,我需要能够过滤新的日期>,并排除“NaT”。正在尝试
d1[(d1['New_Date']>'2019-11-01')]
但不起作用

0    2019-11-20
1    2019-11-18
2    2019-11-16
3    2019-11-13
4    2019-11-11
5    2019-11-10
6    2019-11-08
7    2019-11-06
8    2019-11-02
9    2019-11-01
10   2019-10-30
11   2019-10-28
12   2019-10-26
13   2019-10-01
14          NaT
15          NaT
16   2019-10-18
17   2019-10-13
18   2019-10-10
19   2019-10-08
20          NaT
21          NaT

任何帮助都将不胜感激

首先,您需要将日期转换为适当的
datetime
对象,提供适当的输入格式(我假设是
/
-您可以根据
datetime
文档:)对其进行调整。您可以通过以下方式执行此操作:

df[“Date_2”]=pd.to_datetime(df[“Date”].astype(str),format=“%a%m/%d”)
然后使用python
datetime.strtime()
method对筛选条件使用类比转换:

从日期时间导入日期时间
df.loc[df[“Date_2”]>datetime.strtime(“Thu 11/12”,“a%m/%d”)]
所以整个例子:

将熊猫作为pd导入
从日期时间导入日期时间
df=pd.DataFrame({“Date”:[“Sat 11/16”,“Fri 11/8”,“Wed 11/13”],“x”:[4,3,7]})
df[“Date_2”]=pd.to_datetime(df[“Date”].astype(str),format=“%a%m/%d”)
打印(“\n示例筛选:”)
打印(df.loc[df[“Date_2”]>datetime.strtime(“Thu 11/12”,%a%m/%d”))
打印(“\n全部内容:”)
打印(df)
和输出:

过滤的示例:
日期x日期2
0 Sat 11/16 4 1900-11-16
2013年11月2日星期三7 1900-11-13
整件事:
日期x日期2
0 Sat 11/16 4 1900-11-16
1周五11/8 3 1900-11-08
2013年11月2日星期三7 1900-11-13

(由于没有提供年份,因此假定为
1900

您是否愿意将格式更改为另一种格式,或者是否有一个单独的列,列上日期供您的批判员搜索?我写了这个解决方案,展示了这条路线,也许它会帮助你的想法,我愿意接受改变的建议:

newdf = pd.read_csv('testdata2.csv', parse_dates=["Date"], date_parser=lambda x: pd.to_datetime(x, format="%a %m/%d"), 
index_col="Date") 

newdf = newdf.reset_index()   
newdf['Date'] = newdf['Date'].mask(newdf['Date'].dt.year == 1900, newdf['Date'] + pd.offsets.DateOffset(year=2019))

newdf[(newdf['Date'] > '2019-11/10')]
#Out[63]: 
#        Date   OPP    Result
#0 2019-11-16  @DAL  L110-102
#1 2019-11-13  @POR  W114-106
#2 2019-11-11  @LAC    L98-88

据我所知,您是否只是为了删除NAT而过滤日期?那你就不是这样做的。事实上,Pandas有几个可以检查NAT的函数,例如Pandas.isnull()、Pandas.notna()、Pandas.DataFrame.notna()等:

下面是一个如何使用它的快速示例

    >>> import pandas as pd
    >>> pd.isnull(np.datetime64('NaT'))
    True
    >>> d1[d1['New_Date'].notna()]

请先尝试转换为日期时间。请不要将数据帧作为图像发布。以字典的形式发布,便于他人复制和测试。您可以通过
df.to_dict
获取数据帧字典。这是否回答了您的问题?根据日期格式略有不同。将需要以某种方式转换日期。您可以使用pandas
到\u datetime
或datetime库解析日期。这个网站应该有助于确定应该使用哪种格式。嗨,我更新了我的问题,我能够将我的日期转换为yyyy-mm-dd格式,现在需要筛选>然后。