2つの列としてIDと日付を含むパンダデータフレームがあります。日付列は秒単位です。
data = {'id':[17,17,17,17,17,18,18,18,18],'date':['2018-01-16','2018-01-26','2018-01-27','2018-02-11',
'2018-03-14','2018-01-28','2018-02-12','2018-02-25','2018-03-04'],
}
df1 = pd.DataFrame(data)
新しい列-(tslt)-'time_since_last_transaction'を希望します。一意の各user_idの最初のトランザクションは、たとえば1とすることができます。そのユーザーの後続の各トランザクションは、そのユーザーの最初のタイムスタンプと現在のタイムスタンプの差を測定して、秒単位の時間差を生成する必要があります。
datetimeやtimedeltaなどを使用しましたが、あまり運がありませんでした。任意の助けいただければ幸いです。
あなたが試すことができますgroupby().transform()
:
df1['date'] = pd.to_datetime(df1['date'])
df1['diff'] = df1['date'].sub(df1.groupby('id').date.transform('min')).dt.total_seconds()
出力:
id date diff
0 17 2018-01-16 0.0
1 17 2018-01-26 864000.0
2 17 2018-01-27 950400.0
3 17 2018-02-11 2246400.0
4 17 2018-03-14 4924800.0
5 18 2018-01-28 0.0
6 18 2018-02-12 1296000.0
7 18 2018-02-25 2419200.0
8 18 2018-03-04 3024000.0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加