質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

9300閲覧

スペースの個数が一定でないスペース区切りのデータを読み込み,Dataframeに入れたい.

trami

総合スコア25

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2020/07/01 07:23

前提・実現したいこと

http://www.data.jma.go.jp/svd/eqev/data/daily_map/20200629.htmlにある震源データをtxtファイルとして保存し,それを読み込んで,PandasのDataframeに入れたいです.

参考までにデータのhead()の一部.(2行目の'-*-'は除きました)

年 月 日 時 分 秒 緯度 経度 深さ(km) M 震央地名
2020 6 29 00:00 33.1 36°14.7'N 137°40.1'E 8 0.6 長野県中部
2020 6 29 00:00 54.3 36°11.3'N 137°58.6'E 10 -0.1 長野県中部
2020 6 29 00:02 24.1 36°40.0'N 139°33.4'E 8 0.5 栃木県南部

しかし,区切り文字が,タブやカンマではなく,スペースなのですが,そのスペースもカラムによってスペースの個数が決まっておらず,また同じカラムでもその値によってスペースの個数が異なっているため,うまくできません.

そのため,pd.read_table()は使えないのかと思い,with open()などを使って地道に書き出していこうとしたのですが,スペースが一定でないことがどうもうまく処理できず,dataframeに入れることができませんでした.

該当のソースコード

Python

1import numpy as np 2import matplotlib.pyplot as plt 3import pandas as pd 4 5with open('0629.txt') as f: 6 lines = f.readlines() 7 8lines = ''.join(lines).strip()

試したこと

上記のコードでlinesに改行コードを含む文字列型として入れることはできたのですが,これをそのまま出力しても,一定でない個数のスペースが含まれたままですし,スペースをreplace('', ',')などで置換しようとしたのですが,スペースの個数が一つでないため,うまくいきませんでした.

こういったファイル操作はあまり経験がなく,初歩的な質問かもしれませんがよろしくお願いします.

補足情報(FW/ツールのバージョンなど)

Python 3系

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

delim_whitespace=True で1個以上の空白区切りのデータを読み込めます。

読み込む前に2行目を消したのと、分 秒 のカラムは別れていないようなので、1つのカラムになるようにカラム名の空白を消しました。

diff

1- 分 秒 2+ 分秒

python

1import pandas as pd 2 3df = pd.read_csv("sample.csv", delim_whitespace=True) 4df

投稿2020/07/01 07:41

編集2020/07/01 07:41
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1行の文字列をsplitでスペースで分解すればいいのでは

なんならそこからスペース一個で連結していけばいいですし

投稿2020/07/01 07:27

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問