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

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

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

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

pandas

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

Q&A

解決済

1回答

2899閲覧

pythonで1行のデータの中からMID関数のように数値を抜き出す

littlegreen

総合スコア5

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2020/03/06 05:10

前提・実現したいこと

気象庁の地震カタログのデータをエクセルのMID関数で取り出していたのですが、
データが大きいためpythonでプログラムを組もうとしています。超初心者です。
気象庁のデータは1データ1行で、下記のような形式です。

J1998010100004785 007 315772 030 1302489 030 53013106V 511 7273NW KAGOSHIMA PREF 12K
J1998010100023337 004 315783 016 1302495 021 87407407V 511 7273NW KAGOSHIMA PREF 14K
J1998010100054898 030 261711 067 1284292 113 18 31V 521 7294NEAR OKINAWAJIMA ISLAND 10K

1行目の左から2桁から5桁が西暦、次の2桁が月、次の2桁が日、という形で、
pandasでcsv読み込みはできましたが、MID関数のように1行から桁だけを指定して取り出す、というやり方がどうしても分かりません。
最終的には全データをcsvに格納して保存したいと思っています。
ご教授いただければ幸いです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

import pandas as pd

df = pd.read_csv("h1998.csv" , encoding = 'cp932', header=None ,sep='\t', keep_default_na=False )
print (df)

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2020/03/06 06:25

文字列ならスライスでどうですか? ※スライスについてはご自身で調べください。
littlegreen

2020/03/06 06:52

スライスというものがあるのですね!ありがとうございました。調べてみます。
guest

回答1

0

ベストアンサー

Pythonでは、スライスと呼ばれるものを用いて文字列の一部を取り出すことができます。
Pythonで文字列を抽出(位置・文字数、正規表現) | note.nkmk.me などを参考にしてください。

python

1>>> text = 'abcdefg' 2>>> text[0] 3'a' 4>>> text[1] 5'b' 6>>> text[0:1] 7'a' 8>>> text[0:2] 9'ab'

pd.Seriesに対しても.strアクセサを用いて同じように操作することができます。

python

1>>> s = pd.Series(['text1', 'text2', 'text3']) 2 3>>> s.str[0] 40 t 51 t 62 t 7dtype: object 8 9>>> s.str[0:2] 100 te 111 te 122 te 13dtype: object

EXCELのMID()と異なり、スライスで指定するのは「開始位置:終了位置」ですので注意してください。

投稿2020/03/06 06:45

kirara0048

総合スコア1399

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

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

littlegreen

2020/03/06 06:56

おかげさまで解決しました。 丁寧なご指導、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問