2017-09-11 11 views
1

パンダシリーズは、正規表現キーで辞書を使用して置き換える

Col_1 Col_2 
0  A  a 
1  B  b 
2  C  c 
3  D  d 
4  E  e 
5  F  f 
6  G  g 
7  H  h 
8  I  i 
9  J  j 
10  0  0 

ように私のように定義された辞書を用いてCol_1内の値を交換したいと思い見え

df = pd.DataFrame({'Col_1': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', '0'], 
        'Col_2': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', '0']}) 

として定義データフレームがあると

repl_dict = {re.compile('[ABH-LP-Z]'): 'DDD', 
      re.compile('[CDEFG]'): 'BBB WTT', 
      re.compile('[MNO]'): 'AAA WTT', 
      re.compile('[0-9]'): 'CCC'} 

私は、私はただ単にdf['Col_1'].replace(repl_dict, regex=True)を使用

​​

次のようはされている必要があります。しかし、それは私が期待したものを生み出すものではありません。私が持っていることのようである:

     Col_1 
0  BBB WTTBBB WTTBBB WTT 
1  BBB WTTBBB WTTBBB WTT 
2     BBB WTT 
3     BBB WTT 
4     BBB WTT 
5     BBB WTT 
6     BBB WTT 
7  BBB WTTBBB WTTBBB WTT 
8  BBB WTTBBB WTTBBB WTT 
9  BBB WTTBBB WTTBBB WTT 
10      CCC 

誰もがdf.replace()が私のために働いていなかったと何が予想を取得するために複数の値を交換するための正しい方法だろう、なぜ私に知らせことができれば、私はそれを非常に感謝します出力。

答えて

2

使用アンカー(^$、つまり):

repl_dict = {re.compile('^[ABH-LP-Z]$'): 'DDD', 
      re.compile('^[CDEFG]$'): 'BBB WTT', 
      re.compile('^[MNO]$'): 'AAA WTT', 
      re.compile('^[0-9]+$'): 'CCC'} 

df['Col_1'].replace(repl_dict, regex=True)を生成します。

0   DDD 
1   DDD 
2  BBB WTT 
3  BBB WTT 
4  BBB WTT 
5  BBB WTT 
6  BBB WTT 
7   DDD 
8   DDD 
9   DDD 
10  CCC 
+0

ああ、本当にありがとうございました!これは動作します!乾杯! – mikeqfu

関連する問題