38408


次のような、部屋の階数を示すデータがあります。  
['2', 'B1', '23-49', 'M2']  
B1は地下一階を、23-49は、23階を、M2は不明なので、欠損値にしたいと考えています。

[2, -1, 23, NaN]

しかし、現在は、全てNanになってしまいます。  
文字列の置換方法の理解が足りないためと思いますが、  
ご教示下さいますとありがたいです。  
よろしくお願いします。

[code]

    import pandas as pd
    import numpy as np
    import re
    
    df = pd.DataFrame(
        {'kai': ['2', 'B1', '23-49', 'M2']},
        index=[1, 2, 3,4])
    
    df['kai']=df['kai'].replace('23-49', r'(\d)')
    df['kai']=df['kai'].str.replace(r'B(\d*)', -\d*)
    df['kai']=df['kai'].str.replace(r'M(\d*)', np.nan)
    
    print(df)
    
[/code]


CC BY-SA 3.0
2017-10-04T01:24:58.383
38400
2017-10-04T03:01:45.923
2017-10-04T01:31:37.407
20148
20148
question
python pandas
Pandas 文字列の置換


こんな感じでしょうかね？

[code]

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(
        {'kai': ['2', 'B1', '23-49', 'M2']},
        index=[1, 2, 3, 4])
    
    df['kai'] = df['kai'].replace({
        r'^B(\d+)': r'-\1',
        r'^(\d+)-(\d+)': r'\1',
        r'^M(\d+)': np.nan},
        regex=True).astype('float')
    
    print(df)
    
[/code]


CC BY-SA 3.0
2017-10-04T03:01:45.923
38408
2017-10-04T03:01:45.923
24801
38400
answer