はじめに
- ウェブサイトのアクセス解析をしていると、ブラウザや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 : リストの中身をくっつける
- pandas.Series.str.join
-
sep
(くっつけるときの文字列)に'.'
を指定
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
の使い方が勉強になった