web-dev-qa-db-ja.com

Lambdaを使用してStringで始まるときにデータフレームの値を置き換える

データフレームがあります。

import pandas as pd
import numpy as np
x = {'Value': ['Test', 'XXX123', 'XXX456', 'Test']}
df = pd.DataFrame(x)
 _

Lambdaを使用してxxxから始まる値をnp.nanに置き換えたい。

私は置き換え、適用、地図で多くのことを試しました、そして私ができる最善のことがfalse、true、true、falseです。

以下はうまくいきますが、私はそれをするより良い方法を知りたいと思います、そして私は適用、交換、そしてラムダはおそらくそれをするより良い方法だと思います。

df.Value.loc[df.Value.str.startswith('XXX', na=False)] = np.nan
 _
3
McRae

適用 メソッドを使用する

_In [80]: x = {'Value': ['Test', 'XXX123', 'XXX456', 'Test']}
In [81]: df = pd.DataFrame(x)
In [82]: df.Value.apply(lambda x: np.nan if x.startswith('XXX') else x)
Out[82]:
0    Test
1     NaN
2     NaN
3    Test
Name: Value, dtype: object
_

適用の性能比較、ここで、loc enter image description here

1
Roushan

.locは不要です。目を書きなさい:

df.Value[df.Value.str.startswith('XXX')] = np.nan
 _

代入する表現を計算したい場合は、Lambda関数が必要になる可能性があります。この場合はnp.nanが十分です。

0
Valdi_Bo