質問: df.x.str.extract(r'(\d*)').fillna(0) print(df) ``` 出力結果: ``` x car_time walk_time 1 車5(0.8km) 5 2 5 0 5 3 車27(8.6km) 27 ```
回答: `r'(\d*)'` だと空文字列にもマッチしてしまいます。1桁以上の数字から始まる文字列のみにマッチさせるために `r'^(\d+)'` などとすると良いです。 作業途中の `df.x.str.extract(***)` あたりを `print` してみると `NaN` があるかないかが分かるので、違いに気づけます。