私には2つのデータフレームがあり、1つは購買データ、もう1つは週単位のカレンダーです。 DF1の「purchased_at」日付「はweek_start」と「week_end」の間に収まる場所に基づいてDF2から選択され、私はDF1に「week_no」列を追加するために、2つのデータを使用したいPythonは複雑な基準に基づいて2番目のデータフレームから行を選択します
df1:
purchased_at product_id cost
01-01-2017 1 £10
01-01-2017 2 £8
09-01-2017 1 £10
18-01-2017 3 £12
df2:
week_no week_start week_end
1 31-12-2016 06-01-2017
2 07-01-2017 13-01-2017
3 14-01-2017 20-01-2017
、 DF2の日付、すなわち
df1:
purchased_at product_id cost week_no
01-01-2017 1 £10 1
01-01-2017 2 £8 1
09-01-2017 1 £10 2
18-01-2017 3 £12 3
私が検索したが、私は、データが2間の比較を用いて第2のデータフレームから引き出されている、と私はすることはできませんされてきた例を見つけることができるされていませんでした私が見つけた例を正しく適用してください。
df1.loc[(df1['purchased_at'] < df2['week_end']) &
(df1['purchased_at'] > df2['week_start']), df2['week_no']
はValueErrorをして、失敗したことは誰もがこの問題に役立つ、または達成するためのより良い方法があるかどうか、私は提案を開いてるでし
「は同一の標識Seriesオブジェクトを比較することができます」を同じ結果。
DF1全データフレームヘッダを
purchased_at purchase_id product_id product_name transaction_id account_number cost
01-01-2017 1 1 A 1 AA001 £10
01-01-2017 2 2 B 1 AA001 £8
02-01-2017 3 1 A 2 AA008 £10
03-01-2017 4 3 C 3 AB040 £12
...
09-01-2017 12 1 A 10 AB102 £10
09-01-2017 13 2 B 11 AB102 £8
...
18-01-2017 20 3 C 15 AA001 £12
増分各行でそうpurchase_id増加をDF1のさらなる詳細を追加する
編集、PRODUCT_IDとPRODUCT_NAME 1持っている:1の関係をtransaction_idも段階的に増加しますが、トランザクション内で複数の購入が可能です。
'df1'の日付を解析すると、あなたが使用している定義が*標準*のように見えるので十分です。では、代わりに[this](https://stackoverflow.com/questions/2600775/how-to-get-week-number-in-python)を見て、その時点で 'df2'を忘れてしまいます。 –
クエリでは、データフレームは(一般的に)全く異なる形をしています。それぞれのデータフレームにあなたが参加できる鍵(https://pandas.pydata.org/pandas-docs/stable/merging.html)を構築する必要があります(df1の曜日を開始してください)。上のコメントとともに、これは解決策を示唆するはずです – Quickbeam2k1
カウントは今後の年に続きますので、来年は53-104週間などとなりますので、私はそれに参加したいと思っています組み込み式から計算するのではなく、別々に – Sarah