前提・実現したいこと
欠損値を含むCSVデータにおいて、欠損値の行をスキップしたリストを作成したいです。
具体的には(わかりやすさのために空白を意図的に入れています)、
timestamp, temp1, temp2
20190224T220301, 23.4,,
20190224T220305, ,18.9
20190224T220306, 23.8,,
20190224T220311, ,18.5
のようなデータで、1列目の時刻は必ず出力されるのですが、2列目(temp1)と3列目(temp2)とは値がある時とない時とがあります。やりたいことは、2列目(あるいは3列目)のデータがある時のCSVを作ることです。すなわち(temp1の場合なら)、
timestamp, temp1
20190224T220301, 23.4
20190224T220306, 23.8
のような出力を期待しています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "<ipython-input-40-22bf500f84b5>", line 5, in <module> if buf[1] == "": IndexError: list index out of range
該当のソースコード
Python
1with open("data8974.csv", mode = "r", encoding = "utf-8") as f: 2 for line in f: 3 buf = line.rstrip().split(",") 4 if buf[1] != "": 5 print(buf[0] + "," + buf[1])
試したこと
2列目(temp1)で、データがない部分をどのように条件すべきなのかが問題なのは理解しています。最初は、上記のソースコードに示すように、buf[1] != ""、で実行できると思いました。temp1にデータがある対のデータは得られるのですが、上記のようなエラーに対する適切なコードがわかりません。buf[1] = NaN、なども試しましたが、list index out of range、という同様のエラーが出てわからなくなってしまいました。
どのような記述があるのか教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
Windows10
Anaconda Spyder 3.3.2
Anaconda Pandas 0.23.4
Anaconda Python 3.7.1
Anaconda IPython 7.2.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/24 20:44