我使用以下代码来处理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'>