38329


dfにおけるｘには、目的地までの来るまでの移動時間、または徒歩分数が混在しています。  
index 2には、徒歩分数が入っています。  
車での移動時間が入っている箇所では、「車x(ykm)」という形式になっています。  
車の時間のみを取り出し、次のような列に「car_time」という変数名を付けて、dfに追加したいです。

['5','0','27']

現在は以下のような状況です。

[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])
    
    df['car_time'] = df.apply(lambda i: re.split(r'[^0-9]', i.x), axis=1)
    print(df)
    #                x            car_time
    #    1   車5(0.8km)   [, 5, 0, 8, , , ]
    #    2           5                 [5]
    #    3  車27(8.6km)  [, 27, 8, 6, , , ]
    
[/code]

追伸：御陰様で、下記のコマンドで、作成することができました。

[code]

    # 車時間のみを取り出し、欠損値には0をうめる。
    df['car_time'] = df.x.str.extract(r'車(\d*)').fillna(0)
    
[/code]


CC BY-SA 3.0
2017-09-30T21:15:09.347
38328
2017-10-02T20:13:51.403
2017-10-02T20:13:51.403
20148
20148
question
python pandas
dataframeに含まれる、文字列中の数字を取り出したい


これでどうでしょう。 [Series.str.extract](https://pandas.pydata.org/pandas-
docs/stable/generated/pandas.Series.str.extract.html#pandas.Series.str.extract)
を使いました

[code]

    >>> df
                x
    1   車5(0.8km)
    2           5
    3  車27(8.6km)
    >>> df.x.str.extract(r'車(\d*)').fillna(0)
    1     5
    2     0
    3    27
    Name: x, dtype: object
    >>> df['ans'] = df.x.str.extract(r'車(\d*)').fillna(0)
    >>> df
                x ans
    1   車5(0.8km)   5
    2           5   0
    3  車27(8.6km)  27
    
[/code]


CC BY-SA 3.0
2017-09-30T22:04:19.403
38329
2017-09-30T22:04:19.403
806
38328
answer