我有一个员工数据集(他们的ID)和几年来他们老板的名字
df:
我需要做的是看看员工是否有老板的变动。因此,期望的输出是:
对于只出现在df中一次的员工,我只分配0(没有老板的变动)。然而,我不知道如何为在df工作了几年的员工做这件事
我在想,首先我需要为df中出现的第一年分配0(因为我们不知道以前谁是老板,因此没有老板的变化)。然后,我需要将boss的名称与下一行中的名称进行比较,并决定是将1还是0分配到ManagerChange列中
到目前为止,我将df拆分为两个(具有唯一ID和重复ID),并为唯一ID的ManagerChange分配了0
然后我对重复的ID进行分组,并按年份对它们进行排序。但是,我是Python新手,无法理解如何比较字符串并将结果值分配给groupby中的新列。请帮忙
到目前为止,我掌握的代码是:
# splitting database in two
bool_series = df["ID"].duplicated(keep=False)
df_duplicated=df[bool_series]
df_unique = df[~bool_series]
# assigning 0 for ManagerChange for the unique IDs
df_unique['ManagerChange'] = 0
# groupby by ID and sorting by year for the duplicated IDs
df_duplicated.groupby('ID').apply(lambda x: x.sort_values('Year'))
您可以按
shift()
分组,然后在Boss
列上进行比较您还可以使用
fill_value
参数,这将帮助您摆脱最后的df.loc[]
操作相关问题 更多 >
编程相关推荐