在数据帧熊猫中选择日期范围

时间:2016-01-31 06:56:43

标签: python datetime pandas dataframe slice

首先非常感谢那些帮助的人,当人们可以提供帮助时学习很有趣。

我没有切片并选择关闭,我有一个

的数据框
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

我想创建这些数据的各种切片。

首先是每月整体,接下来是每个单位每月整体,然后是本月,过去三个月和过去6个月的个人

到目前为止的

代码

             Unit   Name          Count   Month Year
2013-01-01   U1     fn ln         2       01    2013
2013-01-01   U1     fn1 ln1       200     01    2013
2013-02-01   U2     fn2 ln2       55      01    2013
...
2016-01-01   U1     fn3 ln3       2       01    2016
2016-01-01   U1     fn1 ln1       200     01    2016
2016-01-01   U2     fn5 ln5       55      01    2016

我认为问题是groupby删除了重复,但我不明白如何创建给我个人的视图。

1 个答案:

答案 0 :(得分:1)

您可以按to_period将索引转换为periodindex,并按unique查找过去3个月:

print df
           Unit     Name  Count  Month  Year
2013-01-01   U1    fn ln      2      1  2013
2013-02-01   U1    fn ln      2      2  2013
2013-02-01   U1  fn1 ln1    200      2  2013
2013-03-01   U2  fn2 ln2     55      3  2013
2013-04-01   U2  fn2 ln2     55      4  2013
2013-05-01   U2  fn2 ln2     55      5  2013
2016-01-01   U1  fn3 ln3      2      1  2016
2016-01-01   U1  fn1 ln1    200      1  2016
2016-01-01   U2  fn5 ln5     55      1  2016

#convert index to Periodindex
print df.index.to_period('M')
PeriodIndex(['2013-01', '2013-02', '2013-02', '2013-03', '2013-04', '2013-05',
             '2016-01', '2016-01', '2016-01'],
            dtype='int64', freq='M')

#last 3 unique values
print df.index.to_period('M').unique()[-3:]
PeriodIndex(['2013-04', '2013-05', '2016-01'], dtype='int64', freq='M')

print df.index.to_period('M').isin(df.index.to_period('M').unique()[-3:])
[False False False False  True  True  True  True  True]

#last 3 months
print  df.loc[df.index.to_period('M').isin(df.index.to_period('M').unique()[-3:])]
           Unit     Name  Count  Month  Year
2013-04-01   U2  fn2 ln2     55      4  2013
2013-05-01   U2  fn2 ln2     55      5  2013
2016-01-01   U1  fn3 ln3      2      1  2016
2016-01-01   U1  fn1 ln1    200      1  2016
2016-01-01   U2  fn5 ln5     55      1  2016