我正在使用具有以下结构的熊猫数据帧:
df1 = pd.DataFrame({'left_name' : ['left_name1', 'left_name2', 'left_name3', 'left_name4', 'left_name5', 'right_name6', 'right_name7', 'right_name8'],
'right_name' : ['right_name1', 'right_name2', 'right_name2', 'right_name2', 'right_name3', 'right_name4', 'right_name4', 'right_name5'],
'score' : [0.98, 0.99, 0.97, 0.91, 1, 0.92, 0.90, 0.96]})
print(df1)
left_name right_name score
0 left_name1 right_name1 0.98
1 left_name2 right_name2 0.99
2 left_name3 right_name2 0.97
3 left_name4 right_name2 0.91
4 left_name5 right_name3 1.00
5 right_name6 right_name4 0.92
6 right_name7 right_name4 0.90
7 right_name8 right_name5 0.96
我想在上表中添加两个新列。从视觉上看,生成的数据帧应该如下所示:
left_name right_name score col1 col2
0 left_name1 right_name1 0.98 MATCH 1
1 left_name2 right_name2 0.99 POTENTIAL 1
2 left_name3 right_name2 0.97 POTENTIAL 0
3 left_name4 right_name2 0.91 POTENTIAL 0
4 left_name5 right_name3 1.00 MATCH 1
5 right_name6 right_name4 0.92 POTENTIAL 1
6 right_name7 right_name4 0.90 POTENTIAL 0
7 right_name8 right_name5 0.96 MATCH 1
创建两个新列的规则如下:
col1
系列:unique right_name
设置为MATCH
,duplicates right_name
设置为POTENTIAL
。你知道吗col2
系列:
MATCH
用1
标记right_name
的每组,得分最高的{0
)我很难将上述规则翻译成Python/Pandas代码。任何帮助如何思考和代码这将不胜感激。你知道吗
解决方案如果需要匹配每个组的最大值-如果存在每个组的
1
值并且是max
,则选择它:或删除所有
1
行,使用按位OR
添加的1
行获取每个组的最大值:检查更改样本数据的差异:
相关问题 更多 >
编程相关推荐