按不同频率对熊猫数据帧进行采样

时间:2013-10-06 22:54:49

标签: python pandas

我有一个多索引系列/数据帧,ID和时间戳作为键。该数据结构具有各种ID的每日数据。我可以使用resample函数查看此数据结构的月末快照吗?

ID ts           value 
1  2001-01-30   1
   2001-01-31   2
   2001-02-01   3
2  2001-01-30   3
   2001-01-31   2
   2001-02-01   4

我想要这个输出

ID  ts          value
1   2001-01-31  2
2   2001-01-31  2

我可以使用重新采样函数调用来帮助我吗?我知道我可以创建月末日期列表并循环查看这些日期并找到这些值。但我想使用熊猫的全部功能。

1 个答案:

答案 0 :(得分:1)

为什么需要重新取样?只需将索引设置为ts然后切片,如下所示:

from cStringIO import StringIO
raw = """id  ts     value
1  2001-01-30   1
1  2001-01-31   2
1  2001-02-01   3
2  2001-01-30   3
2  2001-01-31   2
2  2001-02-01   4"""
sio = StringIO(raw)
df = read_csv(sio, sep=r'\s+', header=0, parse_dates=[1])
df.set_index('ts', inplace=True)

切片然后重置索引:

print df['2001-01-31'].reset_index().set_index('id')

导致:

                    ts  value
id                           
1  2001-01-31 00:00:00      2
2  2001-01-31 00:00:00      2

如果您不关心如果它们不存在将推断月末值,那么您可以这样做:

df.groupby('id', as_index=False).resample('M', how='last')

给出了

            id  value
ts                   
2001-01-31   1      2
2001-02-28   1      3
2001-01-31   2      2
2001-02-28   2      4