[英]python pandas: lookup value in one column conditioned on other column
我有以下df:
Customer | transaction_id | medium | first_transaction_flag
ABC 12345 organic Y
ABC 23456 email 0
ABC 34567 organic 0
BCD 45678 organic 0
BCD 56789 referral 0
我需要添加带有实际第一种介质的列。 这是我要寻找的最终产品:
Customer | transaction_id | medium | first_transaction_flag | first_medium
ABC 12345 organic Y organic
ABC 23456 email 0 organic
ABC 34567 organic 0 organic
BCD 45678 organic 0 0
BCD 56789 referral 0 0
基本上,对于“ first_transaction_flag” = Y的事务,“ medium”列中的值是多少,请在“ first_medium”列中为该客户端的所有事务复制该值。
我想我真的很接近在@piSquared先前答案之一的帮助下解决它。
df['first_medium'] = df.lookup(df.Customer, df.medium)
但不确定如何将它与用于first_transaction_flag =='Y'的np.where语句结合使用
很抱歉,如果以前有人问过我,我找不到它
首先获得客户索引的系列中的第一种介质:
first_medium = df.loc[
df['first_transaction_flag'] == 'Y',
['Customer', 'medium']
].set_index('Customer')['medium'] # makes it a series
然后执行查找:
df['first_medium'] = first_medium.loc[df['Customer']].fillna(0).values
最后一个.values
是必需的,因此分配不是通过索引完成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.