如何根据熊猫中两个不同列的条件将值从一列复制到另一列?

时间:2020-06-24 14:02:54

标签: python pandas

嗨,我正在尝试根据条件将值从一列复制到另一列。 但是没有运气。

代码:


import pandas as pd
df1 = pd.read_csv('file.txt',sep='\t')
id_array = list(df1['ID_1'].unique())

df1['id2_in_id1?'] = df1['ID_2'].apply(lambda a : 'Yes' if a in id_array else 'No')#was trying to create condition for copy

输入:

ID_1    ID_2    branchID         fill?
ABC1               1              yes
DAC1    ABC1                      no
TAC1    ABC1                      no
MAK1    ABC1                      no
TBG1    ABC1                      no
DEF1               2              no
VAX1    DEF1                      no

预期输出:

ID_1    ID_2    branchID    smallbrancid
ABC1                1            
DAC1    ABC1                     1
TAC1    ABC1                     1
MAK1    ABC1                     1
TBG1    ABC1                     1
DEF1                2             
VAX1    DEF1                     


1 个答案:

答案 0 :(得分:1)

使用两个mask + ffill

df['smallbrancid']=df.branchID.mask(df.branchID.eq('')).ffill().mask(df.branchID.ne(''),'')
df
Out[37]: 
   ID_1  ID_2 branchID smallbrancid
0  ABC1     -        1            -
1  DAC1  ABC1        -            1
2  TAC1  ABC1        -            1
3  MAK1  ABC1        -            1
4  TBG1  ABC1        -            1
5  DEF1     -        2            -
6  VAX1  DEF1        -            2