2017-05-16 3 views
0

ルックアップコードを使用して新しい列をPythonデータフレームに追加しようとしています。いくつかの方法を試しましたが、新しい列は常に空白として返されます。Pythonは空白を返すルックアップコードを使用してデータフレーム列を追加します

私の大規模なデータフレームは、列

file: 
input_code 
20 
21 

20 

(いくつかの空白行に注意してください)を有しており、私のルックアップ辞書がある:私は他で見つけたいくつかの異なる提案を試してみた

lookup = {'20':'1' , '21':'4', '22':'3'} 

file['output'] = file['input_code'].map(lookup) 

file['output'] = np.where(file['input_code']=='21','4','') 

file['output'] = file['input_code'].map(lambda x: lookup.get(x,np.nan) 

と同様に、参照フレームのデータフレームバージョンへの結合/結合ry。これらのどれもがエラーを投げることはありませんが、それらのすべてがNaNの列としてfile ['output']を返します。

私が考えることができるのは、データ型と関係があるということだけです。ファイル[input_code]のdtypeはオブジェクトですが、詳細を知るには十分に堪能ではありません。 dtypeを変更しても動作しないようです。

ご指摘いただきありがとうございます。

答えて

0

apply()を試しましたか?

コード:

import pandas as pd 
import numpy as np 
df = pd.DataFrame(['20', '21', '', '22'], columns=['input_code']) 
print(df) 
print(df.dtypes) 

lookup = {'20': '1', '21': '4', '22': '3'} 

df['output'] = df.input_code.apply(lambda x: lookup.get(x, np.nan)) 
print(df) 

結果:

input_code 
0   20 
1   21 
2   
3   22 

input_code object 
dtype: object 

    input_code output 
0   20  1 
1   21  4 
2    NaN 
3   22  3 
+0

まだない喜び。他のものと同様、「出力」列を追加しますが、それらはすべて空白です。 データフレームのdtypesでは、input_codeはオブジェクトとして出力されますが、float64として出力されます。これは問題の一部ですか? – Sarah

+0

テストコードを実行しても問題ありませんか?もしそうなら、あなたは明らかにdtypeかフォーマットの問題があります。私はあなたが[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を作成しようとすることをお勧めします。それができないと(おそらく私が期待している)あなたのデータがMCVEの作成を許可していないものを判断しようとします。がんばろう。 –

関連する問題