【Python】CSVファイルに新しい行「時間」を追加する方法

目次

はじめに

今回は、Pythonを使って、CSVファイルに「時間」の行を新たに追加する方法について学びました。
使用環境は以下のとおりです。

  • OS: Windows 10 Pro
  • バージョン: 20H2

背景

CSVファイルを読み込み、データを整形している過程で、
**「時間」**に関する行(カラム)が存在しないことに気づきました。

グラフ描画や可視化の際には「時間」軸があると非常に便利なため、
新たに時間のデータを生成し、CSVファイルに追加する処理を実装しました。


実際に行った手順

① 時間データを1秒刻みで作成

まず、range()関数を使用して、0秒から1800秒まで、1秒刻みのリストを作成しました。

Time = [list(range(0, 1800, 1))]

ここで作られたリストは、0, 1, 2, …, 1799という1秒ごとのデータです。


② データフレームに変換

次に、先ほどのリストをpandas.DataFrameに変換しました。

Time = pd.DataFrame(Time)

この段階では、1行に横並びでデータが並んでいる状態です。


③ 列と行を入れ替える

列方向ではなく、行方向に時間を並べるため、**transpose()**を使って行列を反転させました。

Time = Time.transpose()

これで、時間が縦に並ぶ形に整いました。


④ カラム名を「時間(s)」に設定

続いて、データフレームにカラム名を付けました。

Time_columns = ['時間(s)']
Time.columns = Time_columns

これにより、Timeデータフレームの列名が「時間(s)」に統一されました。


⑤ 元データと結合

最後に、読み込んだCSVファイル(ここでは変数dfに格納)と、作成したTimeデータフレームを横方向(列方向)に結合しました。

df = pd.concat([df, Time], axis=1)

これで、元のデータに新たな「時間(s)」カラムが追加されました。


苦労した点

今回の作業で苦労した点は大きく2つありました。

  • カラム名の付与
    最初、時間のデータだけ作成して結合しようとしたところ、カラム名がないためエラーが発生しました。
    「カラムを事前に付与しておく必要がある」と気づくのに時間がかかりました。
  • 結合方法の選択
    当初はmerge()関数を使おうとしましたが、エラー pgsqlコピーする編集するTypeError: only integer scalar arrays can be converted to a scalar index が発生しました。
    このエラーは、merge()が主にキー結合用であり、単純な列追加には向かないため起こったものでした。
    結局、concat()を使うことで無事解決できました。

まとめ

  • range()pandas.DataFrameを使えば、連番の時間データを簡単に作成できる。
  • 行列の向きを整えるには、transpose()が便利。
  • merge()ではなく、concat(axis=1)を使うことで、列を追加することができる。
  • データフレームに事前にカラム名を設定しておくと、エラーを防げる。

今回の作業を通じて、データフレーム操作の基本的な理解が一段と深まったと実感しました。
今後は、さらに効率的なデータ整形テクニックにも挑戦していきたいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次