2017-02-18 21 views
2

I以下のパンダのデータフレーム持っている:私は(例えば01nnに)IDを持つすべての果物を交換したいと思いますパンダのデータフレームの値を置き換える際の問題?

Fruits 
0 this should be a pinneapple 
1 this should be an apple 
2 this should be a tomato 
3 this should 3 grapes 
4 this should be an orange 
5 this should be an 01 
6 this should be an 02 

:で

df = pd.DataFrame({'Fruits':['this should be a pinneapple', 
           'this should be an apple', 
           'this should be a tomato', 'this should 3 grapes', 
          'this should be an orange', 
           'this should be an 01', 
          'this should be an 02']}) 

df 

アウト。このために私は機能を置き換えるパンダで試してみました:私はとき

df['Fruits'] = df['Fruits'].replace(['pinneapple', 'apple', 'tomato', 'grapes', 'orange'],\ 
                     ['01', '02', '03', '04', '05']) 

は、しかし、上記の課題は何も私は微調整することが興味を持って列に行われません。したがって、どのようにして各単語を所定の数に置き換えることができますか?

答えて

3

あなたはSeries.replaceでパラメータregex=Trueを使用することができます。

df['Fruits'] = df['Fruits'].replace(['pinneapple', 'apple', 'tomato', 'grapes', 'orange'],\ 
            ['01', '02', '03', '04', '05'], regex=True) 
print (df) 
       Fruits 
0 this should be a 01 
1 this should be an 02 
2 this should be a 03 
3  this should 3 04 
4 this should be an 05 
5 this should be an 01 
6 this should be an 02 

ます。またcodesためlist comprehensionを使用することができます。

fruits = ['pinneapple', 'apple', 'tomato', 'grapes', 'orange'] 
codes = [str(i + 1).zfill(2) for i, c in enumerate(fruits)] 
print (codes) 
['01', '02', '03', '04', '05'] 

df['Fruits'] = df['Fruits'].replace(fruits,codes, regex=True) 
print (df) 

       Fruits 
0 this should be a 01 
1 this should be an 02 
2 this should be a 03 
3  this should 3 04 
4 this should be an 05 
5 this should be an 01 
6 this should be an 02 
+0

助けてくれてありがとう! – tumbleweed

1

は以下を使用して値をリセットしてください:

その後、
df['Fruits'] = pd.DataFrame() 

新しい値を再度割り当てる

関連する問題