38351


dfにおけるｘには、目的地までの来るまでの車での移動時間、または徒歩分数が混在しています。  
index 2には、徒歩分数が入っています。  
車での移動時間が入っている箇所では、「車x(ykm)」という形式になっています。  
xから、車での移動時間を示すcar_timeと徒歩分数walk_timeの二つの変数を作成したいです。  
現在は次のような状況ですが、walk_timeの、index=1, 2の部分に0が入りません。  
私が、正規表現が分かっていないからだと思いますが、ご教示くださいますとありがたいです。

[code]

    import pandas as pd
    import numpy as np
    import re
    
    df = pd.DataFrame(
        {'x': ['車5(0.8km)', '5', '車27(8.6km)']},
        index=[1, 2, 3])
    
    # 車時間のみを取り出し、欠損値には0をうめる。
    df['car_time'] = df.x.str.extract(r'車(\d*)').fillna(0)
    #　徒歩分数のみを取り出し、欠損値には0を埋める
    df['walk_time'] = df.x.str.extract(r'(\d*)').fillna(0)
    
    print(df)
    
[/code]

出力結果：

[code]

                x car_time walk_time
    1   車5(0.8km)        5          
    2           5        0         5
    3  車27(8.6km)       27          
    
[/code]


CC BY-SA 3.0
2017-10-01T23:25:06.103
38345
2017-10-02T01:21:33.433
20148
question
python pandas
pandasで1変数の情報を用いて2変数を作成したい


`r'(\d*)'` だと空文字列にもマッチしてしまいます。1桁以上の数字から始まる文字列のみにマッチさせるために `r'^(\d+)'`
などとすると良いです。

作業途中の `df.x.str.extract(＊＊＊)` あたりを `print` してみると `NaN` があるかないかが分かるので、違いに気づけます。


CC BY-SA 3.0
2017-10-02T00:41:10.567
38351
2017-10-02T01:21:33.433
2017-10-02T01:21:33.433
19110
19110
38345
answer