Python 如何使用两列值更新第三列中的值?
我想用0或1更新列,其中每个empID的月份最小,Sal Hike的月份最大: 我已经编写了代码来查找每个员工的最小月数和最大月数Python 如何使用两列值更新第三列中的值?,python,pandas,numpy,Python,Pandas,Numpy,我想用0或1更新列,其中每个empID的月份最小,Sal Hike的月份最大: 我已经编写了代码来查找每个员工的最小月数和最大月数 df.sort_values(['salhike','month'],ascending=[False,True]).groupby("empid").head(1) 如何用1列更新“是”或“否” 输入DF: empid age salhike month YES_or_NO 123 23 12 1 0 123 23
df.sort_values(['salhike','month'],ascending=[False,True]).groupby("empid").head(1)
如何用1列更新“是”或“否”
输入DF:
empid age salhike month YES_or_NO
123 23 12 1 0
123 23 24 2 0
123 23 87 3 0
123 23 35 4 0
111 23 87 1 0
111 23 35 2 0
111 23 14 3 0
111 23 12 4 0
我尝试获取的输出表是:
empid age salhike month YES_or_NO
123 23 12 1 0
123 23 24 2 0
123 23 87 3 1
123 23 35 4 0
111 23 87 1 1
111 23 35 2 0
111 23 14 3 0
111 23 12 4 0
尝试使用sort_值,然后使用empid上的子集进行复制,并将布尔序列转换为整数,然后重新分配给dataframe中的列:
df.assignYES\u或\u NO=~df.sort\u值['empid','salhike']
.duplicatedsubset='empid',keep='last'.astypeint
输出:
empid age salhike month YES_or_NO
0 123 23 12 1 0
1 123 23 24 2 0
2 123 23 87 3 1
3 123 23 35 4 0
4 111 23 87 1 1
5 111 23 35 2 0
6 111 23 14 3 0
7 111 23 12 4 0
尝试使用sort_值,然后使用empid上的子集进行复制,并将布尔序列转换为整数,然后重新分配给dataframe中的列:
df.assignYES\u或\u NO=~df.sort\u值['empid','salhike']
.duplicatedsubset='empid',keep='last'.astypeint
输出:
empid age salhike month YES_or_NO
0 123 23 12 1 0
1 123 23 24 2 0
2 123 23 87 3 1
3 123 23 35 4 0
4 111 23 87 1 1
5 111 23 35 2 0
6 111 23 14 3 0
7 111 23 12 4 0
使用groupby transform max
更新
df['YES_or_NO']=0
df.loc[df.groupby('empid')['salhike'].idxmax(),'YES_or_NO']=1
使用groupby transform max
更新
df['YES_or_NO']=0
df.loc[df.groupby('empid')['salhike'].idxmax(),'YES_or_NO']=1
正在尝试应用此项但不起作用:file.assignYES\u或\u NO=~file.sort\u值['salhike','empid',升序=[False,True]。duplicatedsubset='empid',keep='last'。aTypeInt您得到的是什么排序、错误或不正确的输出?我得到的是较小的salhike和最大月数为1。@subodhagrawal尝试更新排序,并将月添加到sort.file.assignYES\u或\u NO=~file.sort\u值['salhike','month',升序=[True,False]。duplicatedsubset='empid',keep='last'.aTypeInt尝试应用此项但不起作用:file.assignYES\u或\u NO=~file.sort\u值['salhike','empid',升序=[False,True]。duplicatedsubset='empid',keep='last'。aTypeInt您得到的是什么排序、错误或不正确的输出?我得到的是较小的salhike和最大月数为1。@subodhagrawal尝试更新排序,并将月添加到sort.file.assignYES\u或\u NO=~file.sort\u值['salhike','month',升序=[True,False]。duplicatedsubset='empid',保持class='last'。astypenti我试图得到最小月数和最大月数。@subodhagrawal你说的最小月数和最大月数是什么意思?对于id 123,最小月数是1,最大月数是12,那么我们应该给它指定1吗?您的代码将给出正确的输出,但是如果对于EMPID 123,第4个月的salhike值是87,那么这将给我第3个月和第4个月的值都是1,而不是仅给第3个月的值。@subodhagrawal我给出了更新,请检查一下,谢谢…这很简单:-我正试图得到最低月数和最高月数。@subodhagrawal你说的最低月数和最高月数是什么意思?对于id 123,最小月数为1,最大月数为12,那么我们是否应该为其指定1?您的代码将给出正确的输出,但如果对于EMPID 123,第4个月的salhike值为87,则第3个月和第4个月的salhike值均为1,而不是仅第3个月的值。@subodhagrawal我给出了更新,请检查它。这很简单:-