groupby应用Pandas不会产生所需的输出

时间:2016-09-01 23:01:21

标签: python pandas

以下是我的数据框的一小部分示例:我正在尝试使用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

仍然试图找到我在大熊猫的抓地力。提前谢谢。

1 个答案:

答案 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的索引。