【发布时间】:2021-04-09 08:19:20
【问题描述】:
我有一个员工数据集(他们的 ID)和他们老板的名字,这些年数年了。
df:
我需要做的是看看员工是否有老板的变化。所以,期望的输出是:
对于只在 df 中出现一次的员工,我只分配 0(没有老板的变动)。但是,对于在df工作了几年的员工,我不知道该怎么做。
我在想首先我需要为他们出现在df中的第一年分配0(因为我们不知道之前谁是老板,所以没有老板的变化)。然后我需要将老板的名字与下一行的名字进行比较,并决定将 1 或 0 分配到 ManagerChange 列中。
到目前为止,我将 df 一分为二(具有唯一 ID 和重复 ID),并将 0 分配给 ManagerChange 以获得唯一 ID。
然后我将重复的 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'))
【问题讨论】:
标签: python pandas pandas-groupby string-comparison