繁体   English   中英

python pandas:以另一列为条件的一列中的查找值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM