Python 如何使用重复的行和条件更新列?
我有重复的数据,并给出了一组条件,我想用“标志”更新列。Python 如何使用重复的行和条件更新列?,python,pandas,numpy,dictionary,duplicates,Python,Pandas,Numpy,Dictionary,Duplicates,我有重复的数据,并给出了一组条件,我想用“标志”更新列。 原件: A. B C D aa 福 4. 7. 15 -99.0 福 4. 7. 15 0.1 酒吧 5. 9 3. 14 酒吧 6. 2. 4. 14 使用idxmax查找组中最高值的索引并设置为1: COLS=[“A”、“B”、“C”、“D”] df[“保持”]=0 df.loc[df.groupby(COLS)[“aa”].apply(lambda x:x.idxmax())。值,“Keep”]=1 >>df A、B、C、D、A
原件: A. B C D aa 福 4. 7. 15 -99.0 福 4. 7. 15 0.1 酒吧 5. 9 3. 14 酒吧 6. 2. 4. 14
使用
idxmax
查找组中最高值的索引并设置为1:
COLS=[“A”、“B”、“C”、“D”]
df[“保持”]=0
df.loc[df.groupby(COLS)[“aa”].apply(lambda x:x.idxmax())。值,“Keep”]=1
>>df
A、B、C、D、A
0 foo 4715-99.0 0
1 foo 4 7 15 0.1 1
2巴59314.01
3巴6 2 4 14.0 1
5天后,我发现我在重复记录之前漏掉了一行。我失踪了:
df=df.reset_索引(drop=True)
添加使脚本工作并标记Keep变量的。我愿意接受更多的解决方案,尤其是较短的解决方案(类似于上面的Correlian)。如果两个重复值为-99.0或相同的值0.1或其他值,会发生什么情况。它只选择一个还是?
idxmax
返回最大值的索引,因此如果最高值重复,则返回第一个索引。其他较低的值并不重要。