所以我的代码如下:
df['Dates'][df['Dates'].index.month == 11]
我正在做一个测试,看看我是否可以过滤月份,以便它只显示 11 月的日期,但这没有用。它给了我以下错误:AttributeError: 'Int64Index' object has no attribute 'month'。
如果我这样做
print type(df['Dates'][0])
然后我得到类“pandas.tslib.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
...
最佳答案
使用 pd.to_datetime
和 dt
访问器
公认的答案不是解决此问题的“ Pandas ”方式。
要仅选择具有 month 11
的行,请使用 dt
访问器:
# df['Date'] = pd.to_datetime(df['Date']) -- if column is not datetime yet
df = df[df['Date'].dt.month == 11]
同样适用于几天或几年,您可以将 dt.month
替换为 dt.day
或 dt.year
除此之外还有很多,这里列举几个:
dt.quarter
dt.week
dt.weekday
dt.day_name
dt.is_month_end
dt.is_month_start
dt.is_year_end
dt.is_year_start
有关完整列表,请参阅 documentation
关于python - 如何按特定月份/日期过滤日期数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25873772/