当前位置: 首页 > 面试题库 >

如何按特定月份/日期过滤日期数据框?

燕烨
2023-03-14
问题内容

所以我的代码如下:

df['Dates'][df['Dates'].index.month == 11]

我正在做一个测试,看是否可以过滤月份,所以它只显示11月的日期,但这没有用。它给了我以下错误:AttributeError:’Int64Index’对象没有属性’month’。

如果我做

print type(df['Dates'][0])

然后我得到类’pandas.tslib.Timestamp’,这使我相信存储在数据框中的对象类型是Timestamp对象。(我不确定之前的错误是“
Int64Index”来自何处)

我想做的是:dataframe列包含从2000年代到现在的以下格式的日期:dd / mm /
yyyy。我只想过滤11月15日至3月15日之间的日期,与YEAR无关。最简单的方法是什么?

谢谢。

这是df [‘Dates’](带有索引):

0    2006-01-01
1    2006-01-02
2    2006-01-03
3    2006-01-04
4    2006-01-05
5    2006-01-06
6    2006-01-07
7    2006-01-08
8    2006-01-09
9    2006-01-10
10   2006-01-11
11   2006-01-12
12   2006-01-13
13   2006-01-14
14   2006-01-15
...

问题答案:

映射一个匿名函数以计算该系列的月份,并将其与11的11月进行比较。那会给你一个布尔面罩。然后,您可以使用该掩码过滤数据框。

nov_mask = df['Dates'].map(lambda x: x.month) == 11
df[nov_mask]

我认为没有直接的方法可以过滤掉您想忽略年份的方式,因此请尝试此方法。

nov_mar_series = pd.Series(pd.date_range("2013-11-15", "2014-03-15"))
#create timestamp without year
nov_mar_no_year = nov_mar_series.map(lambda x: x.strftime("%m-%d"))
#add a yearless timestamp to the dataframe
df["no_year"] = df['Date'].map(lambda x: x.strftime("%m-%d"))
no_year_mask = df['no_year'].isin(nov_mar_no_year)
df[no_year_mask]


 类似资料:
  • 问题内容: 有人可以向我解释为什么以下过滤器在月份和日期级别不起作用吗?按年份进行过滤似乎有效,但其他两个方法却无效。 快速更新以演示在创建和处理查询集之前我得到了相同的行为: 这里有更多值得深思的地方: 问题答案: Django文档给出了将时区定义安装到数据库的指令: SQLite:安装-转换实际上是在Python中执行的。 PostgreSQL:无要求(请参阅时区)。 Oracle:无要求(请

  • 问题内容: 我正在尝试通过键入日期范围来过滤包含时间戳的列表 例如: JSFIDDLE html javascript 我希望能够用值填充“发件人”字段:27-05-2010 并且“ To”字段的值为:29-07-2015 并仅获取该范围内的记录。 (示例中的第一条记录)。 谢谢分配阿维 问题答案: 您可以创建一个自定义过滤器来实现此目的。 JSFIDDLE html javascript 此外,

  • 问题内容: 有人可以向我解释为什么以下过滤器在月份和日期级别上不起作用吗?按年份进行过滤似乎有效,但其他两个方法却无效。 快速更新以演示在创建和处理查询集之前我得到了相同的行为: 这里有更多值得深思的地方: 问题答案: @SimonWilder完美地回答了为什么它不起作用的问题,这是您可以在不禁用Django中的TZ支持的情况下实际解决它的方法 Django文档给出了将时区定义安装到数据库的指令:

  • 问题内容: 我正在尝试搜索日期范围内的日期范围内的所有项目,但失败(不返回任何结果) 查询: 映射: 结果是: 通过一个带数字值的整数字段(“ cards”)的范围过滤的同一查询工作正常。将日期更改为非常早的开始(1900-01-01 00:00:00)也不会显示任何结果。 我究竟做错了什么? 顺便说一句,我知道我在映射中启用了_timestamp,但这不是我要过滤的字段。 问题答案: 似乎对我来

  • 问题内容: 我想知道您的想法: 在会话期间,我必须获得与系统的所有连接。为了使这一过程自动化,我决定使用current_date%,因为current_date不是字符串,而是一个函数,因此该方法不起作用。 所以我的问题是,是否有人可以帮助我进行查询以获取当日所有连接的数量。 提前致谢! 我糟糕的代码: 问题答案: 最好的方法(从性能的角度来看)是使用如下逻辑: 并非所有数据库都支持日期的ISO