2016-12-20 6 views
0

データフレームの各行に色を2つの列の関数としてマップしたいとします。引数としてただ1つの列を使うほうがはるかに簡単です。しかし、2つの列でこれをどのように達成できますか?pandas:multidictによる色引数の割り当て

私がこれまで行ってきた:df['color'] = df.apply(lamda x: mapping[x.a][x.b])に似

a = np.random.rand(3,10) 
i = [[30,10], [10, 30], [60, 60]] 
names = ['a', 'b'] 
index = pd.MultiIndex.from_tuples(i, names = names) 
df = pd.DataFrame(a, index=index).reset_index() 

c1 = plt.cm.Greens(np.linspace(0.2,0.8,3)) 
c2 = plt.cm.Blues(np.linspace(0.2,0.8,3)) 
#c3 = plt.cm.Reds(np.linspace(0.2,0.8,3)) 

color = np.vstack((c1,c2)) 
a = df.a.sort_values().values 
b = df.b.sort_values().values 

mapping = dict() 
for i in range(len(a)): 
    mapping[a[i]] = {} 
    for ii in range(len(b)): 
     mapping[a[i]][b[ii]] = color[i+ii] 

たぶん何かを?

答えて

0

あなた自身の質問にお答えしたようです。適用は、軸の引数を1に変更することで行全体で発生する可能性があります。df['color'] = df.apply(lambda x: mapping[x.a][x.b], axis =1)

+0

欠けている部分.. – Moritz

関連する問題