python - Pandas 过滤日期

标签 python pandas

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

+-----------+-------+----------+--+--+
| 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 |  |  |
+-----------+-------+----------+--+--+

我正在尝试过滤日期 > _____ 。

即,这是我尝试过的,但不会过滤所有大于 Sun 11/10 的日期

d1 = d1[(d1['日期'] > '11/10 星期日')]

更新

我的专栏现在看起来像这样,我需要能够过滤 New_Date > _____ 并排除“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对象,提供正确的输入格式(我假设是 <weekday> <month>/<day> - 您可以按照 datetime 文档调整它: https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior )。您可以通过以下方式完成:

df["Date_2"]=pd.to_datetime(df["Date"].astype(str), format="%a %m/%d")

然后使用 python datetime.strptime() 对过滤条件进行类比变换方法:

from datetime import datetime

df.loc[df["Date_2"]>datetime.strptime("Thu 11/12", "%a %m/%d")]

所以整个例子:

import pandas as pd
from datetime import datetime

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")
print("\nExample filtered: ")
print(df.loc[df["Date_2"]>datetime.strptime("Thu 11/12", "%a %m/%d")])
print("\nThe whole thing:")
print(df)

并输出:

Example filtered:
        Date  x     Date_2
0  Sat 11/16  4 1900-11-16
2  Wed 11/13  7 1900-11-13

The whole thing:
        Date  x     Date_2
0  Sat 11/16  4 1900-11-16
1   Fri 11/8  3 1900-11-08
2  Wed 11/13  7 1900-11-13

(由于未提供年份,因此假定为 1900 )

关于python - Pandas 过滤日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58904112/

相关文章:

python - 如何将包含列表的列表列表转换为 DataFrame

python - Pandas 中的分组和求和

python - 重新调整不止一件事有什么问题吗? - 来自 python 函数

python - 逐像素二维辐射校准

python - Pandas DataFrame 将特定函数应用于每一列

python - 如果列值具有字符串,则根据条件对数据框进行子集

python - Pycharm 错误 - 没有名为 MySQLdb 的模块

python - Pandas 时间序列与缺失数据/​​记录的比较

python - 以奇怪的方式对 Pandas 数据框进行排序和分组

python - 根据 pandas 中数据帧另一列的值添加一列