LoginSignup
7
6

More than 5 years have passed since last update.

Seriesからの正規表現によるデータ一括抽出方法

Last updated at Posted at 2016-03-20

正規表現によるSeirieからの文字抽出

pandasで下記のように","区切りで読み込めないようなファイルから、正規表現で必要な文字列だけを抽出してDataFrameにする方法

以下サンプルデータ、そのままread_csvするとカラム数が違うためエラーとなる。

test.csv
value1=12333,value2(fuga,hoge),value3=fuga
value1=111,value2(hoge),value3=fugahoge

読み取る場合はまず一列のデータとして読み取る。

In[2]: import pandas as pd
In[3]: df = pd.read_csv('test.csv',header=None,sep='\t')
In[4]: df
Out[4]: 
                                            0
0  value1=12333,value2(fuga,hoge),value3=fuga
1     value1=111,value2(hoge),value3=fugahoge

正規表現を持ちいた分割にはSeries.str.extract()を利用して分割する。

In[5]: df[0].str.extract('value1=(?P<val1>\d+),value2\((?P<val2>[\w,]+)\),value3=(?P<val3>.*)')
Out[5]: 
    val1       val2      val3
0  12333  fuga,hoge      fuga
1    111       hoge  fugahoge

”()”の中身が実際に抽出する値、”?P<hoge>”の部分でカラム名を指定できる。
指定しない場合は頭から順番に番号が振られる。

また、抽出した値はobjectとして返されるので、int型等に適宜変更する必要がある。

参考

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6