具有如下结构的Pandas数据框:
color price_blue price_red price_green
date
2019-01-01 green 10 20 30
2019-01-02 red 40 50 60
2019-01-03 blue 11 12 13
如何基于每一行的price
列的值添加color
列:
color price_blue price_red price_green price
date
2019-01-01 green 10 20 30 30
2019-01-02 red 40 50 60 50
2019-01-03 blue 11 12 13 11
尽管类似apply
的解决方案似乎很容易,但是在这种情况下,由于数据集相对较大,因此需要矢量化解决方案。
此外,诸如np.where
之类的解决方案仅能使用几种颜色选择,但实际上,存在超过20种不同的“颜色”,因此对于许多嵌套的{ {1}}。
答案 0 :(得分:5)
使用DataFrame.lookup
,并在列price_
中添加color
,以按列名称进行匹配:
df['price'] = df.lookup(df.index, 'price_' + df['color'])
print (df)
color price_blue price_red price_green price
2019-01-01 green 10 20 30 30
2019-01-02 red 40 50 60 50
2019-01-03 blue 11 12 13 11