2
を使用するのdictを決定した場合に使用して、別の列の値に基づいて、列のデータをマッピングここパンダは、私は、次のデータフレーム持っ
state_map = {'CT': 'Connecticut', 'FL': 'Florida', 'TX':'Texas'}
state_map2 = {'CT': 'ABC-CT', 'FL': 'BBC-Florida', 'TX':'CDA-TX'}
をするものですデータは次のようになります。
Name State Year
0 Person1 CT 2017
1 Person2 FL 2017
2 Person3 TX 2017
3 Person1 TX 2016
if conditiを使用して値をマップした新しい列を追加する方法を知りたいのですがonは、state_mapまたはstate_map2からマップされた値を使用するかどうかを決定します。したがって、df [df ['Name'] == 'Person1']の場合はstate_mapを使用し、それ以外の場合はstate_map2を使用します。
最終的な出力は次のようになります。
Name State Year New_State_Name
0 Person1 CT 2017 Connecticut
1 Person2 FL 2017 BBC-Florida
2 Person3 TX 2017 CDA-TX
3 Person1 TX 2016 Texas
私は、次のコードを試みたが、それは動作しませんでした。
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
おかげで、これはあまり行うことが簡単で、それでしたうまくいく!私はちょうど興味があった、私の論理は、リストの理解の中でif条件を使用しようとすると間違っていましたか? – Tony
リストをif文の値と比較すると、あいまいなエラーが発生します。このリストの一部がTrueを返し、partが何をするかわからない場合、Falseを返します。したがって、any()やall()のような別のメソッドを使う必要があります。これは、リストのany()の部分がTrueまたはリストのすべての要素がTrueになる場合にロジックになります。 –
ありがとうございました! – Tony