创建一个新列,计算不同行中的值



从excel导入的df开始,如下所示:

Rev<1>
代码 时间
AAA 5 3
AAA 3 2
AAA 6 1
血脑屏障 10 2
血脑屏障 5

你可以做:

#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

最新更新