pandas:multidict

时间:2016-12-20 10:03:21

标签: pandas dictionary

我想将颜色映射到数据框中的每一行,作为两列的函数。只用一列作为参数就会容易得多。但是我怎样才能用两列实现这个目标呢?

到目前为止我做了什么:

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]

也许类似于df['color'] = df.apply(lamda x: mapping[x.a][x.b])

1 个答案:

答案 0 :(得分:0)

看起来你回答了自己的问题。通过将axis参数更改为1 df['color'] = df.apply(lambda x: mapping[x.a][x.b], axis =1)

,可以在行中进行应用