変数の中に、文字列がある場合には、欠損値とする方法


文字列がある場合には、欠損値np.nanにしたいと考えています。  
現在は、次のようなコードを考えています。

[code]

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'x': [3, 'TV', np.nan]})
    
    #文字列がある場合には、欠損値とする。
    df['x'].applymap(lambda row: np.nan if type(row) is str, axis=1)
    
[/code]

しかし、エラーが出ます。

[code]

    df['x'].applymap(lambda row: np.nan if type(row) is str, axis=1)
                                                               ^
    SyntaxError: invalid syntax
    
[/code]

xを次のようにしたいのですが、

[code]

    {'x': [3, np.nan, np.nan]}
    
[/code]

どなたか、ご教示頂けるとありがたいです。




`df['x']`は、`Series`なので`axis`がないためエラーになっています。`apply`を使うのであれば、以下のようにします。

[code]

    df['x'] = df['x'].apply(lambda row: np.nan if type(row) is str else row)
    
[/code]

しかし、`to_numeric`を使う方が簡単で高速に処理できます。

[code]

    df['x'] = pd.to_numeric(df['x'], errors='coerce')
    
[/code]




`df['x']`は、`Series`なので`axis`がないためエラーになっています。`apply`を使うのであれば、以下のようにします。

[code]

    df['x'] = df['x'].apply(lambda row: np.nan if type(row) is str else row)
    
[/code]

しかし、`to_numeric`を使う方が簡単で高速に処理できます。

[code]

    df['x'] = pd.to_numeric(df['x'], errors='coerce')
    
[/code]

