2017-10-17 14 views
0

私はPythonで新入生です。また、インデックスが{'a','b','c'}であると私は検索してインデックスを交換したいデータフレームがあるpython辞書を検索して値を置き換えます。

{'a':apple,'b':bread,'c':coke} 

:最近、私のような、言葉の省略形を持っている辞書があり、本当に簡単question.Firstに会いましたdictionary.Soは結果が実際に

{'apple','bread','coke'} 

になり、私はすべてのitem.Howeverを訪問して循環を使用することができます知っている、この方法では、膨大なデータのために恐ろしいことができます。

他の効率的な方法があるかどうか知りたいのですが、

+0

[dic.get(a) for a in df.index] ['apple', 'bread', 'coke'] 

セットのインデックスを。それを回避することはありません。各交換作業に一定の時間がかかることを確かめてください(あなたが使用していれば、あなたは大丈夫です)。 – jonatan

+0

リンゴ、パン、コークスは文字列ですね。 – sheldonzy

+0

はい、すべて文字列です。 – xiyan

答えて

0

あなたが何か他のものに置き換える場合は、すべての要素を参照する必要があります。ここでは、Pythonでどのように達成できるかについて考えています。

d = {'a':'apple', 'b': 'bread', 'c':'coke'} 
l = ['a', 'b', 'c'] 

あなたはリストの内包使用して、このような何かを行うことができます:

# look in the dictionary for the value, 
# if it's there replace with the value, else let it be there as it is 

l = [d[e] if e in d else e for e in l] 

またはマップを使用して:あなたのデータセットを仮定し

は、このようなものになります

l = map(lambda e: d[e] if e in d else e, l) 
0

を私はしないでください要素を反復することなく値を置き換える方法があると思いますが、

dict1 = {'a': 'apple','b': 'bread' ,'c':'coke'} 
auxList = ['a', 'b', 'c'] 

auxList = [dict1.get(elem) for elem in auxList] 

print(auxList) 

結果は次のとおりです:あなたのコードのシンプルな、あなたはこのような何かを試すことができます

['apple', 'bread', 'coke'] 

またはあなたが試すことができます:

auxList = list(map(lambda elem: dict1.get(elem), auxList)) 

結果は再び次のようになります。

['apple', 'bread', 'coke'] 
0

回答とpandaのDataFrame -

辞書データフレームのインデックスで値の取得
import pandas as pd 

a = ['a','b','c'] 
b = [[1,2,3],[4,5,6],[7,8,9]] 
df = pd.DataFrame(index=a, data=b) 
dic = {'a':'apple','b':'bread','c':'coke'} 
df 
    0 1 2 
a 1 2 3 
b 4 5 6 
c 7 8 9 

:あなたは、各項目を訪問する必要があります各アイテムを交換するために

df.set_index(keys=[[dic.get(a) for a in df.index]], inplace=True) 
df 
     0 1 2 
apple 1 2 3 
bread 4 5 6 
coke 7 8 9 
関連する問題