使用Pandas根据另一列的值选择一列

时间:2019-10-28 14:05:36

标签: python pandas numpy

具有如下结构的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}}。

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