2016-10-16 4 views
4

辞書を使用してパンダSeriesの値を置換したいと考えています。私は、DSMのaccepted answerそうのような@以下のよ:パンダの値を辞書で置換する

s = Series(['abc', 'abe', 'abg']) 
d = {'b': 'B'} 
s.replace(d) 

しかし、これは何も影響を与えました:

0 abc 
1 abe 
2 abg 
dtype: object 

documentationは、対応するトップレベルのキーでDataFrames(つまり、ネストされたdictsのためのdictの必要な形式を説明していません列名に)私はSeriesのための特定のものを見ることができません。

+3

結果を代入するか、パラメータ 'inplace = True'を渡す必要があります。 's = s.replace(d)'または 's.replace(d、inplace = True)'のように、実質的にすべてのpandasオペレーションがコピーを返すので、サポートされている場合は 'inplace = True'を代入したいか渡します。 – EdChum

+0

: 's.replace(d、regex = True)' – MaxU

+0

@EdChum、 's.replace(d、inplace = True)' - 希望する置換をしません - それをテストしてください... – MaxU

答えて

4

あなたはregex=Trueパラメータ使用してそれを行うことができます:あなたはすでにfound out yourselfを持っていたよう

In [37]: s.replace(d, regex=True) 
Out[37]: 
0 aBc 
1 aBe 
2 aBg 
dtype: object 

を - それは正規表現の交換だとあなたが期待どおりに動作しません:これはとして働いている

In [36]: s.replace(d) 
Out[36]: 
0 abc 
1 abe 
2 abg 
dtype: object 

期待通り:

In [38]: s.replace({'abc':'ABC'}) 
Out[38]: 
0 ABC 
1 abe 
2 abg 
dtype: object 
+1

これは、* value * '" b "'を '' B "'で置き換えることを前提としているので、値 'b'はシリーズにありません。しかし、 'b'は値を構成する文字列に含まれています... –

+0

@ juanpa.arrivillaga、ありがとう!私はすでにそれを実現しました。 :) – MaxU

関連する問題