2016-09-01 15 views
0

以下は私のデータフレームの小さなサンプルです:私は希望の結果を与えていないgroupby.applyを試しています。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_IDと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

これはトランザクションデータです。あるlocation_IDで、60秒以下でトランザクションが発生している端末の数。 –

答えて

0

あなたの操作の結果はpandasシリーズです。データフレーム内の列にしたい場合は、それを1に割り当てる必要があります。

df1のコピーとしてdf3を作成し、にお電話を変更します。

df3['Time'] = df1.groupby(['Location_ID','Terminal'])['Time'].apply(lambda x : x.diff()<=dt.timedelta(seconds=60)) 

また、あなたは明らかにしたい「LOCATION_ID」とデータフレームの指標として「ターミナル」。

+0

df1.copy()のmy df3のインデックスを再作成する必要がありますか?なぜなら、もし私が再索引をしたら、 "bool"値の代わりにNansを得るからです。 –

+0

参考文献とコピーを区別することに問題があると思います。私が投稿したコードで 'df1.groupby'の代わりに' df3.groupby'を試して、あなたが望む列にインデックスをリセットしてください – vmg

+0

素晴らしい...ありがとう。 –

関連する問題