Python 使用指定给特定值的重复项合并数据帧
我有两个数据帧Python 使用指定给特定值的重复项合并数据帧,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧 data1 = {'col4':['Tom', 'nick', 'krish', 'jack'], 'col5':[20, 21, 19, 18]} df1 = pd.DataFrame(data1) col4 col5 0
data1 = {'col4':['Tom', 'nick', 'krish', 'jack'],
'col5':[20, 21, 19, 18]}
df1 = pd.DataFrame(data1)
col4 col5
0 Tom 20
1 nick 21
2 krish 19
3 jack 18
data2 = {'col1':['xxx', 'yyy', 'zzz', 'xxx','yyy', 'xxx', 'yyy', 'zzz'],
'col2':['Tom', 'nick', 'krish', 'jack','Tom', 'nick', 'krish', 'jack'],
'col3':[110, 121, 119, 118,141,156,176,186]}
df2 = pd.DataFrame(data2)
col1 col2 col3
0 xxx Tom 110
1 yyy nick 121
2 zzz krish 119
3 xxx jack 118
4 yyy Tom 141
5 xxx nick 156
6 yyy krish 176
7 zzz jack 186
我需要在基于col2和col4的df2数据帧中包含col5。除第一个值外,col2中重复值的col5值应指定为0。例如,Tom被重复,在与df1合并后,只有Tom的第一个值(索引0)被分配给20。Tom的其他值应为0(索引4)。我希望生成的dataframe列为:
col1 col2 col3 col5
0 xxx Tom 110 20
1 yyy nick 121 21
2 zzz krish 119 19
3 xxx jack 118 18
4 yyy Tom 141 0
5 xxx nick 156 0
6 yyy krish 176 0
7 zzz jack 186 0
请帮助我实现这一目标。
提前感谢。合并,然后使用和应用条件:
Tom和nick可以具有相同的值,除第一次出现外,col2的副本必须为0
final = df2.merge(df1, how='left', left_on='col2', right_on='col4')
final.col5 = np.where(final.duplicated(['col2', 'col5']), 0, final.col5)
print(final)
col1 col2 col3 col4 col5
0 xxx Tom 110 Tom 20
1 yyy nick 121 nick 21
2 zzz krish 119 krish 19
3 xxx jack 118 jack 18
4 yyy Tom 141 Tom 0
5 xxx nick 156 nick 0
6 yyy krish 176 krish 0
7 zzz jack 186 jack 0