を交換する私は、次のデータフレームがあります。numpyの:条件付きnp.whereは
'customer_id','transaction_dt','product','price','units'
1,2004-01-02 00:00:00,thing1,25,47
1,2004-01-17 00:00:00,thing2,150,8
2,2004-01-29 00:00:00,thing2,150,25
3,2017-07-15 00:00:00,thing3,55,17
3,2016-05-12 00:00:00,thing3,55,47
4,2012-02-23 00:00:00,thing2,150,22
4,2009-10-10 00:00:00,thing1,25,12
4,2014-04-04 00:00:00,thing2,150,2
5,2008-07-09 00:00:00,thing2,150,43
5,2004-01-30 00:00:00,thing1,25,40
5,2004-01-31 00:00:00,thing1,25,22
5,2004-02-01 00:00:00,thing1,25,2
を私は次のプロセスを持っている:
start_date_range = pd.date_range('2004-01-01 00:00:00', '12-31-2017 00:00:00', freq='30D')
end_date_range = pd.date_range('2004-01-30 23:59:59', '12-31-2017 23:59:59', freq='30D')
tra = df['transaction_dt'].values[:, None]
idx = np.argmax(end_date_range.values > tra, axis=1)
df['window_start_dt'] = np.take(start_date_range, idx)
df['window_end_dt'] = end_date_range[idx]
はしかし、私はDFとの問題を解決するためにnp.where
を使用する必要があります[ 'window_start_dt']を次の条件で置き換えます。
'transaction_dt' <= 'window_start_dt'
の場合は、前の日時の値をstart_date_range
に設定します。
らしいです。ハングアップは何ですか? 'numpy.where'ドキュメントについてはっきりしないことはありますか?データフレームの前の行にアクセスすることに関するあなたの質問は何ですか? –
ありがとう、私は近いと思います。私は、np.whereを条件付きで 'window_start_dt'の値をstart_date_rangeのような配列やリストから条件的に置き換える方法についてはっきりしていません – Pylander
[numpy'のオンラインドキュメント](https://docs.scipy.org/) doc/numpy-1.13.0/reference/generated/numpy.where.html)を参照してください。 –