从excel导入的df开始,如下所示:
代码 | 时间 | Rev|
---|---|---|
AAA | 5 | 3 |
AAA | 3 | 2 |
AAA | 6 | 1 |
血脑屏障 | 10 | 2 |
血脑屏障 | 5 | <1>
你可以做:
#Create a column called 'Last' with 'NOK' values
df['Last'] = 'NOK'
#Skipping sorting because you say df is already sorted.
#Then locate the first row in each group and change its value to 'OK'
df.loc[df.groupby('Code', as_index=False).nth(0).index, 'Last'] = 'OK'
您可以使用pandas.groupby.cumcount并将组的每第一行设置为"OK"。
dict_ = {
'Code': ['AAA', 'AAA', 'AAA', 'BBB', 'BBB'],
'Time': [5, 3, 6, 10, 5],
'Rev': [3, 2, 1, 2, 1],
}
df = pd.DataFrame(dict_)
df['Last'] = 'NOK'
df.loc[df.groupby('Code').cumcount() == 0,'Last']='OK'
这给了我们预期的输出:
df
Code Time Rev Last
0 AAA 5 3 OK
1 AAA 3 2 NOK
2 AAA 6 1 NOK
3 BBB 10 2 OK
4 BBB 5 1 NOK
或者您可以尝试获取每个组的头,并将其值设置为OK
df.loc[df.groupby('Code').head(1).index, 'Last'] = 'OK'
这给了我们同样的
df
Code Time Rev Last
0 AAA 5 3 OK
1 AAA 3 2 NOK
2 AAA 6 1 NOK
3 BBB 10 2 OK
4 BBB 5 1 NOK