前提・実現したいこと
お世話になっております。Pythonの初心者です。
Pythonでのデータフレームの取扱い、CSVファイルにおける時刻データの取り扱いで困っており、質問させていただきます。
次の2つのCSVファイルが手元にあります。それぞれ以下のような形式です。
・data1.csv
装置1で得られるデータで、約6~7秒毎に一つのデータが記録されています。
(一行目が日時、二行目がデータです)
data1.csv
1time, result 209:01:10 Tue 11/Jun/2019, 2.756E-13 309:01:17 Tue 11/Jun/2019, 3.191E-13 409:01:24 Tue 11/Jun/2019, -5.787E-13 509:01:30 Tue 11/Jun/2019, 9.3388E-14 609:01:37 Tue 11/Jun/2019, -1.732E-13 709:01:44 Tue 11/Jun/2019, 3.7258E-13 809:01:51 Tue 11/Jun/2019, 6.8894E-14 909:01:58 Tue 11/Jun/2019, -1.459E-13 1009:02:04 Tue 11/Jun/2019, 1.7784E-13 1109:02:11 Tue 11/Jun/2019, -1.593E-13 1209:02:18 Tue 11/Jun/2019, 2.3648E-14 1309:02:25 Tue 11/Jun/2019, -6.262E-14
・data2.csv
装置2で得られるデータであり、約82〜83秒毎に一つのデータが記録されています。
(一行目が日時、二行目がデータです)
data2.csv
1time, result 22019/6/11 8:59:09, 2.32E-13 32019/6/11 9:00:31, 2.71E-13 42019/6/11 9:01:54, 2.22E-13 52019/6/11 9:03:16, 2.24E-13 62019/6/11 9:04:39, 2.22E-13 72019/6/11 9:06:01, 2.32E-13
ここで、実現したいことが少しややこしいので以下に分割して記します。
- data1.csv と data2.csvの時刻を比較する。
- data2.csv の時刻に最も近い data1.csv の時刻を見つける。
ここではn行目が最も近かったとします。
3. data1.csvの2列目に入っているデータの一つ目からn個目までの平均値を計算し、それを別のcsvファイルに保存する。これを全データに渡って繰り返す。
具体的な例は以下の通りです。
- data1.csvとdata2.csvの時刻を見比べると、最初の最も近い時刻は
data1.csv: 09:01:51 (上から7番目)
data2.csv: 09:01:54 (上から3番目)
です。
-
data1.csvの2行目のデータについて、上から1番目から7番目までのデータの平均値を計算し、別のcsvファイルに保存する。
-
その次にdata2.csvと最も時刻が近いのは、
data1.csv: 09:03:13 (上から19番目)
data2.csv: 09:03:16 (上から4番目)
なので、data1.csvのデータについて、上から8番目から19番目までのデータの平均値を計算し、 csvファイルに追記していくということを実現したいのです。以降も同じです。
試したこと
以前に本サイトで質問されていた以下の内容に基づいてコードを書いてみたのですが、data2.csvの時刻が一致したところまでのdata1.csvに入力されているデータの平均値の計算を繰り返すというステップで詰まってしまっています。
「Python:2つのデータフレームを比較し,時間が近いものを抜き出す」
https://teratail.com/questions/63702
どうかお力を貸していただければ幸いです。
追記事項
追加で説明申し上げます。「最も近い時刻」の定義ですが、過去でも未来でも、差分が一番小さいものという意味で申し上げました。また、偶然、過去と未来で時間差が同じになった場合は、過去のもの採用したいと考えております。どうぞよろしくお願い申し上げます。
あなたの回答
tips
プレビュー