我希望有人能帮我解决这个问题!我在网上还没找到足够接近的东西。
样本数据:
import pandas as pd
sample_data = {
'id': [1,1,1,1,1,2,2,2,2,2],
'date_rank': [1,2,3,4,5,1,2,3,4,5],
'candidates': [1,0,0,3,0,0,0,0,2,0],
'desired_output':['New_filled','New_open','Double_open','Double_filled','New_open','New_open','Double_open','Double_open','Double_filled','New_open']
}
df = pd.DataFrame(sample_data, columns=['id', 'date_rank','candidates', 'desired_output'])
df
字符串
在sample_data输出中,“desired_output”列显示了所需的结果:
id date_rank candidates desired_output
0 1 1 1 New_filled
1 1 2 0 New_open
2 1 3 0 Double_open
3 1 4 3 Double_filled
4 1 5 0 New_open
5 2 1 0 New_open
6 2 2 0 Double_open
7 2 3 0 Double_open
8 2 4 2 Double_filled
9 2 5 0 New_open
型
date_rank列除了第一个条目外并不重要。
第一个条目将始终是“新的”,但可以是“填充”或“打开”。当0名候选人被雇用时,它是打开的,如果一个或多个候选人被雇用,它是关闭的。这也适用于其余条目。
如果一个条目被填充,则下一行将始终是新的。
如果一个条目是因为没有候选人而开放的,那么下一个条目将始终是双倍的。
如果你看第四行,你会发现,只要前一行打开,条目就可以被双重填充。
在desired_ouptut列中有四个可能的值/条件。我可以用更少的条件来实现这一点,但不能用四个条件,特别是当值取决于前一行的值时。
1条答案
按热度按时间kfgdxczn1#
您可以在当前行上使用两个简单的条件式,其中
numpy.where
和前一行(groupby.shift
):字符串
在numpy中:
型
输出量:
型