7

ここでのシナリオは、df生の整数データを含むデータフレームと、map_arrayそれらの int を文字列値にマップする dict があるというものです。

データフレームの値をマップの対応する値に置き換える必要がありますが、何にもマップされていない場合は元の値を保持します。

これまでのところ、私がやりたいことを実行する方法を理解できた唯一の方法は、一時的な列を使用することです。ただし、私が扱っているデータのサイズでは、これは少し面倒になることがあります。それで、一時列を必要とせずにパンダでこれを行うためのトリックがあるかどうか疑問に思っていました...

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(1,5, size=(100,1)))
map_array = {1:'one', 2:'two', 4:'four'}

df['__temp__'] = df[0].map(map_array, na_action=None) 
#I've tried varying the na_action arg to no effect

nan_index = data['__temp__'][df['__temp__'].isnull() == True].index
df['__temp__'].ix[nan_index] = df[0].ix[nan_index]
df[0] = df['__temp__']
df = df.drop(['__temp__'], axis=1)
4

1 に答える 1