3
4

More than 3 years have passed since last update.

pandas.Series.strで遊んでみた

Posted at

はじめに

  • ウェブサイトのアクセス解析をしていると、ブラウザやOSのバージョンが68.0.3440, 8.0, 18.0.1025などとなっていることが分かった
  • この文字列のままだと、バージョン順に並べることが難しい
  • major.minorが分かればOKなので、pandas.Series.strで遊んでみた

STEP1:バージョンをそのまま出力して確認

  • まず確認
df['browser_version']
0          NaN
1    68.0.3440
2    18.0.1025
3    38.0.1025
4          NaN
Name: browser_version, dtype: object

STEP2:ピリオド.で分割する

  • pandas.Series.str.split
  • 上の結果をみて.で分割することにした
  • pat(=分割する文字)に'.'を指定する
df['browser_version'].str.split('.')
0              NaN
1    [68, 0, 3440]
2    [18, 0, 1025]
3    [38, 0, 1025]
4              NaN
Name: browser_version, dtype: object

STEP3 : 各行のリストを最初の2つだけにしたい

  • pandas.Series.str
  • major.minorとするには、リストの最初の2つだけがあればよい
  • はじめstr.split('.')[0:2]とやってみたがうまくいかなかった
  • あれこれ調べてみたらstr.split('.').str[0:2]と書けば良いことが分かった
df['browser_version'].str.split('.').str[0:2]
0        NaN
1    [68, 0]
2    [18, 0]
3    [38, 0]
4        NaN

STEP4 : リストの中身をくっつける

df['browser_version'].str.split('.').str[0:2].str.join('.')
0     NaN
1    68.0
2    18.0
3    38.0
4     NaN

これで完成!

STEP2で書いたstrの使い方が勉強になった

3
4
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
3
4