前提・実現したいこと
現在、機械の一定動作を記録する実験を行っており、計測データ.csvには実験動作のデータが記載されています。
また、計測データ.csvでデータをグラフ化しています。
日付毎に抽出された外れ値や計測失敗データをまとめた表をチェックリスト.xlsxとして作成しました。
次に、チェック対象データを予め分かりやすくするため、チェック対象の日付を違う色で出力することを試みています。
計測データ.csv
Unnamed: 0 DateTime Operated cycles hdtemp \ 1 1 2018-03-08 19:53:38.590 -2224389.0 0.0 36 36 2018-03-09 18:19:22.260 -2205153.0 32.1 133 133 2018-03-16 14:02:03.760 -1965408.0 56.8 242 242 2018-03-17 02:02:08.130 -1929389.0 58.9 336 336 2018-03-17 14:02:07.820 -1893374.0 58.7 ... ... ... ... 6114 6114 2018-04-16 14:02:10.810 -79607.0 40.6 6201 6201 2018-04-17 02:02:11.640 -63454.0 51.6 6295 6295 2018-04-17 14:02:15.340 -43630.0 49.3 6390 6390 2018-04-18 02:02:12.070 -23799.0 53.2 6485 6485 2018-04-18 14:02:15.750 -3975.0 50.9 count_velocity mean_velocity 1 3287.0 104.510044 36 3286.0 104.511719 133 3289.0 104.595172 242 3290.0 104.485199 336 3292.0 104.495872 ... ... 6114 3280.0 104.503950 6201 3279.0 104.501253 6295 3280.0 104.500587 6390 3268.0 104.511174 6485 3296.0 104.493659
外れ値チェックリスト.xlsx
Date sampleA 8 2018-03-09 not 15 2018-03-16 not 16 2018-03-17 not 17 2018-03-18 not 18 2018-03-19 not ... ... ... 14 2018-04-15 not 15 2018-04-16 not 16 2018-04-17 not 17 2018-04-18 not 18 2018-04-19 not
発生している問題・エラーメッセージ
グラフ出力する際、計測データ.csvのX軸を"Operated cycles列",
Y軸を"mean_velocity列" 又は"count_velocity列" に設定してグラフを出力しています。
今回行いたいことは、計測データ.csvの"DateTime列"と外れ値チェックリスト.xlsxの"Date列"の日付が同じ月日であれば"Date列"と"DateTime列"が一致する日付の行へとdataframeを結合させたいのですがどのようにすればよろしいでしょうか。
質問追記 2018/11/12
変更後,外れ値チェックリスト.xlsx
Date sampleA 1 2018-03-08 19:12:22 NaN 36 2018-03-09 18:20:30 ok 133 2018-03-10 14:00:00 ok 242 2018-03-10 02:02:11 empty 336 2018-03-11 14:00:00 ok .. ... ... 6114 2018-04-17 14:20:31 ok 6201 2018-04-18 02:00:00 ok 6295 2018-04-18 14:03:02 ok 6390 2018-04-19 02:00:00 ok 6485 2018-04-19 14:20:30 ok
上記のチェックリスト.xlsxファイルの仕様が変更し、時刻を追加することになりました。
時刻が2時台と14時台は問題無く計測出来ていると判断していますが、稀に他の時間帯で計測しているデータがあります。また、2時台と14時台の時刻が完全に一致していないこともあり、計測データ.csvをdf["DateTime"].dt.hour
で時間のみ抽出して結合を試みて、series型で返ってきた"DateTime"を再度結合してからもう一度DataFrame化をしたら下記のようになりました。どうにかして分秒を除いて時間のみでpd.merge
を行いたいのですが何か良い方法はありますでしょうか。再度質問をして恐れ入りますがご回答よろしくお願い致します。
DateTime Operated cycles sampleA 1 1970-01-01 00:00:00.000000019 -2224389.0 6.809720 36 1970-01-01 00:00:00.000000018 -2205153.0 9.529389 133 1970-01-01 00:00:00.000000014 -1965408.0 4.865321 242 1970-01-01 00:00:00.000000002 -1929389.0 3.787791 336 1970-01-01 00:00:00.000000014 -1893374.0 6.848335 432 1970-01-01 00:00:00.000000002 -1857366.0 7.682003 528 1970-01-01 00:00:00.000000014 -1821352.0 5.676905 624 1970-01-01 00:00:00.000000002 -1785344.0 8.802663
回答1件
あなたの回答
tips
プレビュー