使用DateFrameGroupBy对象选择时间范围内的最后一组行

时间:2014-06-06 01:46:52

标签: python pandas

我使用以下代码来处理DateFrame对象。 lastwk = g.apply(lambda x: x[ x['realtime'] > (x['realtime'].iloc[-1] - dtt.timedelta(7)) ])

当我使用这个DateFrameGroupBy对象时:上面的代码不起作用。 >

<class 'pandas.core.groupby.DataFrameGroupBy'>
('g', variable  subject_id             realtime  hr1
0                 1  2012-09-27 04:15:00   22
1                 1  2012-09-27 04:31:00   10
2                 1  2012-09-27 04:47:00   2
3                 1  2012-09-27 05:10:00   2
4                 1  2012-09-27 05:37:00   6
203                9  2012-12-12 13:33:00   6
205                9  2012-12-12 14:08:00   14

我主要收到此错误: TypeError: unsupported operand type(s) for -: 'unicode' and 'datetime.timedelta'

这适用于广泛的不同数据集。奇怪的是,漫长而整洁造成了如此多的悲伤。

无论如何,任何帮助都表示赞赏。

- 编辑 -

这里有一些代码来检查groupby中realtime col的类型,并手动浏览并输入lambda:

print 'time type', type(g['realtime'] )
tme = g['realtime'].apply(lambda x: pd.to_datetime(x) )
print 'yo yo' #bugs are fun
print 'time type&&&', type(tme )

这是输出: 没运气! &GT;

time type <class 'pandas.core.groupby.SeriesGroupBy'>
yo yo
time type&&& <class 'pandas.core.series.Series'>

(( - 我从0.10升级到0.14,得到.iloc()索引,这似乎是已经出现的问题之一...... 也遇到了其他数据集的问题 - )))

- 编辑或(欢迎来到unicode city_,女孩们很漂亮):

dt = dt.reset_index() 
print '### 1', dt['realtime'].dtype, dt['realtime'].apply(type) 
dt['realtime'] = pd.to_datetime( dt['realtime'] ) 
print '### 2', dt['realtime'].dtype, dt['realtime'].apply(type) 
dt['time'] = pd.to_datetime( dt['realtime'] ) 
print '### 3', dt['time'].dtype, dt['time'].apply(type) 
exit(0) 

输出: Name: realtime, Length: 1982, dtype: object Name: time, Length: 1982, dtype: object

检查了dt的类型: type dt <class 'pandas.core.frame.DataFrame'>

0 个答案:

没有答案