如何使新熊猫列首次出现?

时间:2019-03-14 09:39:28

标签: pandas

我有以下数据框

import pandas as pd
d ={
    'Item':['Carrot','Beans','Potato','Carrot','Potato'],
    'Stock':[True,True, True,False,True],
    'Price':[91,95,89,55,1005]
}
df=pd.DataFrame(data=d)
print (df)

如何基于列项目使价格首次出现作为数据帧df 的输出列?

预期产量

     Item  Stock  Price  Output
0  Carrot   True     91      91
1   Beans   True     95      95
2  Potato   True     89      89
3  Carrot  False     55      91
4  Potato   True   1005      89

2 个答案:

答案 0 :(得分:3)

一种方式,

df['Output']=df['Item'].map(df[::-1].set_index('Item')['Price'].to_dict())

O / P:

     Item  Price  Stock  Output
0  Carrot     91   True      91
1   Beans     95   True      95
2  Potato     89   True      89
3  Carrot     55  False      91
4  Potato   1005   True      89

说明:

反转数据框将索引设置为Item,因此首先将值存储在map中,然后将dict值替换为Item。

答案 1 :(得分:1)

GroupBy.transformfirst一起使用:

df['Output'] = df.groupby('Item')['Price'].transform('first')
print (df)
     Item  Stock  Price  Output
0  Carrot   True     91      91
1   Beans   True     95      95
2  Potato   True     89      89
3  Carrot  False     55      91
4  Potato   True   1005      89