如何按月份屏蔽数据帧?

时间:2019-08-10 11:07:02

标签: python dataframe datetime

我有一个数据框df1,其中的列dates包含日期。我只想绘制一个月的数据框。列dates如下:

   Unnamed: 0  Unnamed: 0.1      dates      DPD  weekday
0             0          1612 2007-06-01  23575.0        4
1             3          1615 2007-06-04  28484.0        0
2             4          1616 2007-06-05  29544.0        1
3             5          1617 2007-06-06  29129.0        2
4             6          1618 2007-06-07  27836.0        3
5             7          1619 2007-06-08  23434.0        4
6            10          1622 2007-06-11  28893.0        0
7            11          1623 2007-06-12  28698.0        1
8            12          1624 2007-06-13  27959.0        2
9            13          1625 2007-06-14  28534.0        3
10           14          1626 2007-06-15  23974.0        4

..          ...           ...        ...      ...      ...

513         721          2351 2009-06-09  54658.0        1
514         722          2352 2009-06-10  51406.0        2
515         723          2353 2009-06-11  48255.0        3
516         724          2354 2009-06-12  40874.0        4
517         727          2357 2009-06-15  77085.0        0
518         728          2358 2009-06-16  77989.0        1
519         729          2359 2009-06-17  75209.0        2
520         730          2360 2009-06-18  72298.0        3
521         731          2361 2009-06-19  60037.0        4
522         734          2364 2009-06-22  69348.0        0
523         735          2365 2009-06-23  74086.0        1
524         736          2366 2009-06-24  69187.0        2
525         737          2367 2009-06-25  68912.0        3
526         738          2368 2009-06-26  57848.0        4
527         741          2371 2009-06-29  72718.0        0
528         742          2372 2009-06-30  72306.0        1

我只想举个例子,例如2007年6月。

df1 = pd.read_csv('DPD.csv')
df1['dates'] = pd.to_datetime(df1['dates'])
df1['month'] = pd.PeriodIndex(df1.dates, freq='M')
nov_mask=df1['month'] == 2007-06

plot_data= df1[nov_mask].pivot(index='dates', values='DPD')
plot_data.plot()
plt.show()

我不知道我的代码有什么问题。该错误表明在定义2007-06nov_mask有问题,我认为数据类型是错误的,但是我尝试了很多,什么都行不通。

1 个答案:

答案 0 :(得分:0)

如果您只想获取2007年6月的数据,则不需要PeriodIndex。我现在无法访问IPython,但这应该为您指明正确的方向。

df1 = pd.read_csv('DPD.csv')
df1['dates'] = pd.to_datetime(df1['dates'])
df1['year'] = df1['dates'].dt.year
df1['month'] = df1['dates'].dt.month

july_mask = ((df1['year'] == 2007) & (df1['month'] == 7))
filtered = df1[july_mask ]
# ... Do something with filtered.