2017-11-25 10 views
1

Image of how my dataframe looks at the minutePythonでデータフレームに存在する値に基づいて新しい列に値を追加するにはどうすればよいですか?

「会議」という名前のデータフレームに新しい列を挿入しようとしていますが、これは「町」フィールドに基づいています。たとえば、Town == Belfastの場合は、新しい列審議会にベルファストの値を保持します。しかし、作成するメモは、これらの評議会の値のいくつかは町と同じではありません。もう一つの例は、町がクローガーになる可能性があり、私は評議会の値Fermanaghに入れたいです。私は非常にPythonに新しいと本当に任意のヘルプに感謝します。私が残した情報がさらに必要な場合は、お尋ねください。 (これまでのところ、私はベルファストの評議会エリアでこれを試しただけです)

私のやりたいことは、私のデータフレームのすべての行をループし、「町」列をチェックすることです。町の列が「ベルファスト」の場合は、「ベルファスト」の値を「議会」という新しい列に入力したいと思います。

count = 0 
for index, row in PsniYear1617Cleaned.iterrows(): 
    grabtown = PsniYear1617Cleaned["Town"] 
    for value in grabtown: 
     if value["Town"][0] == "Belfast": 
      PsniYear1617Cleaned.set_value(index, 'Council', value["Belfast"]) 
      count = count + 1 

TypeError
Traceback (most recent call last) <ipython-input-122-31f11c973fc5> in <module>() 3 grabtown = PsniYear1617Cleaned["Town"] 4 for value in grabtown: ----> 5 if value["Town"][0] == "Belfast": 6 PsniYear1617Cleaned.set_value(index, 'Council', value["Belfast"]) 7 count = count + 1

はTypeError:文字列のインデックスが指定した町のためにすべて対応する協議会を格納し、町のマップを持っている。この場合、

+0

あなたが '' pandas'でdataframe'を意味していますか? – furas

+0

私は謝罪します、はい私はパンダを使用しています – Sta1995

+0

すべてのコードは意味がありません - 'pandas'は' for'ループなしのデータで動作します – furas

答えて

0

私はあなたが別のcouncilですべての可能なtown秒でmapingためdictionaryを作成し、replaceを使用する必要があると思う:

d = {'Enniskillen':'Fermanagh', 
    'Clogher':'Fermanagh', 
     'town1':'council1', 
     ...} 

PsniYear1617Cleaned['council'] = PsniYear1617Cleaned['Town'].replace(d) 
+0

ありがとう、これは私が探していたもので、私のための最も簡単な解決策でした。完璧な答え、ありがとう。 – Sta1995

0
PsniYear1617Cleaned[:,'council'] = PsniYear1617Cleaned['Town'].apply(lambda x: TOWN_MAP[x]) 

をstr`ない、整数でなければなりませんラムダは残りをするでしょう。

関連する問題