以下是我的数据框的一小部分示例:我正在尝试使用groupby.apply,但这并未给出我想要的结果。
In [204]: df1
Out[204]:
Location_ID Terminal Time
0 10000001405702 *WhF 2016-07-01 13:56:00
1 10000001405702 @W1n 2016-07-01 09:14:39
2 10000001405702 *Wu3 2016-07-01 11:54:52
3 10000001405702 @WJo 2016-07-01 11:30:57
4 10000001405702 @WCg 2016-07-01 11:06:24
5 10000001405702 *WL2 2016-07-01 10:04:20
6 10000001201132 A24O 2016-07-01 14:28:39
7 10000000564967 2JT1 2016-07-01 03:46:31
8 10000000615068 A125 2016-07-01 21:58:33
9 10000000552415 5MTH 2016-07-01 05:51:39
10 10000001405702 *WqW 2016-07-01 00:09:06
11 10000000250413 FF41 2016-07-01 02:59:43
12 10000001125037 WQ2I 2016-06-30 14:03:57
13 10000000174015 H5NM 2016-06-30 05:56:09
14 10000001856529 AR7K 2016-06-30 18:53:05
通过执行以下groupby.apply,我丢失了Location_ID和终端信息,但我需要它。
In [206]: df1.groupby(['Location_ID','Terminal'])['Time'].apply(lambda x : x.diff()<=dt.timedelta(seconds=60))
Out[206]:
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 False
16 False
17 False
我需要一个以下格式的输出,以便可以知道Location_IDs和Terminal的布尔信息。
In [211]: df3
Out[211]:
Time
Location_ID Terminal
10000000000081 3ZR1 False
CDE1 True
CDE4 False
GIG2 True
L43L False
L43W False
W9YE True
YIW1 False
YIW4 True
ZYI7 True
ZYJN False
10000000000086 A1E6 False
A4DG True
仍然试图找到我在大熊猫的抓地力。提前谢谢。
答案 0 :(得分:0)
您的手术结果是熊猫系列。如果您希望它成为Dataframe中的列,则需要将其分配给一个。
将df3
作为df1
的副本,并将您的电话更改为:
df3['Time'] = df1.groupby(['Location_ID','Terminal'])['Time'].apply(lambda x : x.diff()<=dt.timedelta(seconds=60))
此外,您显然希望'Location_ID'和'Terminal'作为Dataframe的索引。