私はトランザクションデータの分析を行っており、一意の顧客ごとの最新のトランザクションからの経過日数を計算したいと考えています。今日の日付と別のdate_time列との間のパンダの差異はありますか?
memberId transactionDate
1111 2017-12-01
2222 2017-12-03
1111 2017-12-05
3333 2017-12-06
TransactionDateが日時の形式になりますように
私の最初のデータフレーム(DF1)が見えます。
これはMEMBERIDと、最新のトランザクションからの日数を持つ新しいデータフレームを作成しようとしている私のコードです:のようにデータフレームとして
import datetime as dt
import pandas as pd
NOW=dt.datetime(2017,12,06)
gb=df1.groupby('memberId')
df2=gb.agg({'transactionDate': lambda x: (NOW-x.max())})
このリターン:
memberId transactionDate
1111 1 days
2222 3 days
3333 0 days
しかし、私は日欲しいです日数ではなく整数で返されるようにします。 この問題を解決するために私の2回目の試行があった。
NOW=dt.datetime(2017,12,06)
gb=df1.groupby('memberId')
df2=gb.agg({'transactionDate': lambda x: (NOW-x.max()).days})
これはtransactionDateのためのエポックタイムのようなものを返す、とのように出力が見えます:私はそれが数字でエポックタイムスタンプを返していると思います
memberId transactionDate
1111 1970-01-01 00:00:00.000000001
2222 1970-01-01 00:00:00.000000003
3333 1970-01-01 00:00:00.000000000
マイクロ秒単位の日数です。
memberId transactionDate
1111 1
2222 3
3333 0
こんにちは@MattRを使用してみてください'transactionDate'をdatetime形式に変更するために上記で追加した行を追加しようとしましたが、私はまだ同じエポック時間の結果を得ています – bbodek
@bbodek、どのpandasバージョンを使用していますか?変換前後の列の 'dtype'は何ですか?最後に、すべてのデータが 'yyyy-mm-dd'形式であることを確かめますか?場合によっては、間違ったフォーマットの単一の値があると、望ましくない結果をもたらすことになります。 – MattR
@bbodekまた、 'df1 ['transactionDate'] = pd.to_datetime(df1 ['transactionDate']、format = '% %M-%d '、errors =' coerce ') ' – MattR