使用DateFrameGroupBy obj选择时间范围中的最后一组行

2024-04-19 17:52:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码来处理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 g中realtime列的类型,以及手动遍历并键入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 )

以下是输出: 不走运! &燃气轮机

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

((-)我从0.10升级到0.14,以获取.iloc()索引,这似乎是出现在。。。 也有其他数据集的问题——呃)

--编辑或(欢迎来到女孩们都很漂亮的unicode城市):

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: objectName: time, Length: 1982, dtype: object

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


Tags: lambda代码corepandasdatetimetimetypedt