我有以下数据框
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
答案 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.transform
与first
一起使用:
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