gpt4 book ai didi

python - 过滤表的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:08 26 4
gpt4 key购买 nike

  1. 以下是一个候选人 (df_wrong) 的原始数据集。
  2. 其中有些行是正确的,有些行不正确。如果阶段的时间戳不遵循 stage_names 的相应顺序逻辑,则行被认为是不正确的。例如:阶段名称必须按照 [Applied, Screen call, Hometask, Hometask review, 1st interview, 2nd interview, etc.] 的顺序出现。每个阶段只能出现一次,并且必须按照上面显示的顺序连续出现

所以这是 df_wrong:

df_wrong = pd.DataFrame({'stage_name':['Applied', 'Screen call', 'Hometask', '2nd interview',
'Hometask review','Screen call', '2nd interview' ],
'stage_num': [1,2,3,6,4,2,6],
'stage_time_mooving_in': ['2018-08-10 12:00:00', '2018-08-10 13:00:00', '2018-08-10 14:00:00',
'2018-08-10 15:00:00', '2018-08-10 16:00:00', '2018-08-10 17:00:00',
'2018-08-10 19:00:00']})

我想创建一个算法,将错误的表转换为正确的表:

df_right = pd.DataFrame({'stage_name':['Applied', 'Screen call', 'Hometask', 'Hometask review',
'2nd interview' ],
'stage_num': [1,2,3,4,6],
'stage_time_mooving_in': ['2018-08-10 12:00:00', '2018-08-10 13:00:00',
'2018-08-10 14:00:00', '2018-08-10 16:00:00',
'2018-08-10 19:00:00']})

我的问题是如何创建这样的算法。我尝试对 df 进行排序并删除重复项,但我不知道它如何适用于所有情况。

所有阶段,都可以在我的管道中,列在这个表中:

full_pipeline =  pd.DataFrame({'stage_name':['Applied', 'Screen call', 
'Hometask', 'Hometask review',
'1st interview', '2nd interview',
'Final interview','Offer'],
'stage_num': [1,2,3,4,5,6,7 ,8]})

注意:有一些建议可以帮助创建算法:

  1. 由于填写方式的原因,第一行和最后一行总是正确的。
  2. 注意所有阶段都可以在此表中。

最佳答案

与同事交谈后提出了这个答案:

def lis(a):
L = []
for (k,v) in enumerate(a):
L.append(max([L[i] for (i,n) in enumerate(a[:k]) if n<v] or [[]], key=len) + [k])
return max(L, key=len)


right_index = lis(list(df_wrong.loc[:,'stage_num']))
df_wrong[df_wrong.index.isin(right_index)]

请随意提出您自己的解决方案

关于python - 过滤表的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51859489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com