前提
Pythonでcsvを処理したいです。
csvは以下のようなものだと考えてください。
No,DateTime,DataA,DataB
01,2022/01/01 01:02:03.456,A,B
02,2022/01/01 01:02:53.456,A,B
02,2022/01/01 01:03:03.456,A,B
……
実現したいこと
行いたいことは2つあります。
①DateTimeの差分をcsvに追加したいです。
上に載せたcsvを例にしますと、DateTimeの1行目に01:02:03、2行目に01:02:53と50秒後の記録がされています。
同様に3行目には01:03:43と2行目から10秒後の記録がなされています。
この差分の記録をDataBの隣に入力したいです。
なのでこの時点では以下のような形のcsv(またはDataFrame)が作成されると思います。
No,DateTime,DataA,DataB,diff
01,2022/01/01 01:02:03.456,A,B,
02,2022/01/01 01:02:53.456,A,B,50
02,2022/01/01 01:03:03.456,A,B,10
……
②更にここからflgという列をdiffの横に追加したいです。
このフラグには、先程作成したdiff列に格納されている時間の差分を判定したいです。
diffの差分を見て、前との時間の差が30秒以下であれば1を、そうでなければ0を入力したいです。
なので最終的には以下の形のcsvが欲しいです。
No,DateTime,DataA,DataB,diff,flg
01,2022/01/01 01:02:03.456,A,B,,
02,2022/01/01 01:02:53.456,A,B,50,0
02,2022/01/01 01:03:03.456,A,B,10,1
……
(diffには今は簡易的に数字のみを書いていますが、実際に出力されるデータに付いては00:00:50.000といった形になるかと思います)
該当のソースコード
Python
1df = pd.read_csv('csvのパス') 2 3df =df.set_index('DateTime') 4df.index =pd.to_datetime(df.index) 5 6df['diff'] = df.index.to_series().diff() 7df.to_csv('出力csv名')
試したこと
上のコードで自分の求めているdiffは出力できたのですが、この書き方だとindexにDateTimeが変更されてしまい、生csvとデータ順が変わってしまいます。
indexを使用しないやり方も試してみたのですが、この場合だとどうしても上手く結果を出力できません。
初歩的な質問で申し訳ありませんが回答よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー