date
およびhours
列とマージする2つの異なるデータフレームがあります。 threads はいくつかありましたが、問題の解決策が見つかりませんでした。私も this ドキュメントを読んで、さまざまな組み合わせを試しましたが、うまくいきませんでした。
私の2つの異なるデータフレームの例
DF1
date hours var1 var2
0 2013-07-10 00:00:00 150.322617 52.225920
1 2013-07-10 01:00:00 155.250917 53.365296
2 2013-07-10 02:00:00 124.918667 51.158249
3 2013-07-10 03:00:00 143.839217 53.138251
.....
9 2013-09-10 09:00:00 148.135818 86.676341
10 2013-09-10 10:00:00 147.833517 53.658016
11 2013-09-10 12:00:00 149.580233 69.745368
12 2013-09-10 13:00:00 163.715317 14.524894
13 2013-09-10 14:00:00 168.856650 10.762779
DF2
date hours myvar1 myvar2
0 2013-07-10 09:00:00 1.617 98.56
1 2013-07-10 10:00:00 2.917 23.60
2 2013-07-10 12:00:00 19.667 36.15
3 2013-07-10 13:00:00 14.217 45.16
.....
20 2013-09-10 20:00:00 1.517 53.56
21 2013-09-10 21:00:00 5.233 69.47
22 2013-09-10 22:00:00 13.717 14.25
23 2013-09-10 23:00:00 18.850 10.69
両方のデータフレームで確認できるように、DF2
は09:00:00
で始まり、DF1
09:00:00
と結合したいと思います。これは基本的にmatchindの日付と時刻です。これまでのところ、以前のスレッドと上記のドキュメントを使用して、さまざまな組み合わせを試しました。例、
merged_df = DF2.merge(DF1, how = 'left', on = ['date', 'hours'])
これにより、正しいNAN
DataFrameのright
値が導入されました。 date
列とhours
列の両方を使用する必要はありませんが、同じ結果が得られます。私はこのようにすばやくR
を試しましたが、これは完全にうまく機能します。
merged_df <- left_join(DF1, DF2, by = 'date')
とにかくpandas
値を取得せずに、一致する値だけでDatFrameをマージするNaN
はありますか?
使用する how='inner'
in pd.merge
:
merged_df = DF2.merge(DF1, how = 'inner', on = ['date', 'hours'])
これにより、「内部結合」が実行され、一致しない各データフレームの行が省略されます。したがって、マージされたデータフレームの右側または左側にNaNはありません。