DataFrame内の特定の文字列を含む箇所だけ変換したい


タイトルの通り、DataFrame内の特定の文字列を含む箇所だけ変換したいと思っております。  
以下の画像のデータ例にある「<」を含む箇所の数値だけを変換したいです。  
変換は「<」を取り除くのに加えて型変換を行い（strからfloatに変換）、「<」があった箇所のみ半分の値（1/2）にしたいと考えています。  
`.str.contains('<')`といった形で指定しようとは思っているのですが、うまく`str.strip()`などと組み合わせる方法がわかりません。  
同じ範囲を選択したまま処理することは可能でしょうか？

何度か繰り返すことになるので、関数として作成しようかと思っています。

[![データ例](https://i.stack.imgur.com/u7x7x.png)](https://i.stack.imgur.com/u7x7x.png)

現在のコード↓

[code]

    file="～.csv"
    data = pd.read_csv(file)
    data1 = data.drop(0,axis=0) #Remove DESCRIPTION
    data1 = data1['Au*'].str.strip('<')
    
[/code]

ご助力いただけませんでしょうか？




どれだけ効率が変わるかはちょっとわかりませんが、以下のようにすると、やりたいことはできそうです。

[code]

    import pandas as pd
    
    
    s = pd.Series({'GH101': '0.2', 'GH102': '<0.02', 'GH103': '<0.02'})
    s
    
    df = s.to_frame('value')
    print(df)
    print('---')
    
    df = df.assign(
        fixed=df['value'],
        small=df['value'].str.contains('^<'),
    )
    print(df)
    print('---')
    
    df.loc[df['small'], 'fixed'] = pd.to_numeric(df[df['small']]['value'].str.replace('<', '')) / 2
    print(df)
    print('---')
    
    print(df[['value', 'fixed']])
    
[/code]

出力

[code]

           value
    GH101    0.2
    GH102  <0.02
    GH103  <0.02
    ---
           value  fixed  small
    GH101    0.2    0.2  False
    GH102  <0.02  <0.02   True
    GH103  <0.02  <0.02   True
    ---
           value fixed  small
    GH101    0.2   0.2  False
    GH102  <0.02  0.01   True
    GH103  <0.02  0.01   True
    ---
           value fixed
    GH101    0.2   0.2
    GH102  <0.02  0.01
    GH103  <0.02  0.01
    
[/code]




どれだけ効率が変わるかはちょっとわかりませんが、以下のようにすると、やりたいことはできそうです。

[code]

    import pandas as pd
    
    
    s = pd.Series({'GH101': '0.2', 'GH102': '<0.02', 'GH103': '<0.02'})
    s
    
    df = s.to_frame('value')
    print(df)
    print('---')
    
    df = df.assign(
        fixed=df['value'],
        small=df['value'].str.contains('^<'),
    )
    print(df)
    print('---')
    
    df.loc[df['small'], 'fixed'] = pd.to_numeric(df[df['small']]['value'].str.replace('<', '')) / 2
    print(df)
    print('---')
    
    print(df[['value', 'fixed']])
    
[/code]

出力

[code]

           value
    GH101    0.2
    GH102  <0.02
    GH103  <0.02
    ---
           value  fixed  small
    GH101    0.2    0.2  False
    GH102  <0.02  <0.02   True
    GH103  <0.02  <0.02   True
    ---
           value fixed  small
    GH101    0.2   0.2  False
    GH102  <0.02  0.01   True
    GH103  <0.02  0.01   True
    ---
           value fixed
    GH101    0.2   0.2
    GH102  <0.02  0.01
    GH103  <0.02  0.01
    
[/code]

