2016-08-23 51 views
0

我有一个DF:比较熊猫数据框的行并找到交集?

year name_list 
2009 [sam,maj,mak] 
2010 [sam, mak, ali, mo, za] 
2011 [mp,ki] 

我想每一行比较name_list中的条款和计算有多少新的名字每年新增/删除。 预期结果:

year name_list   added_count removed_count 
2009 [sam,maj,mak]    0   0 
2010 [sam, mak, ali, mo, za]  3   1 
2011 [mp,ki]      2   5 

任何人都可以帮忙吗?

回答

1

前两行是将2009的值初始化为零。假定这些年份按时间顺序排列,年份在索引中,而不是单独列。还假定列'name_list'中的名称不存在重复值。

df.loc[2009,'added_count'] = 0 
df.loc[2009,'removed_count'] = 0 
for i in df.index[1:]: 
    df.loc[i,'added_count'] = len(list(set(df.loc[i,'name_list'])-set(df.loc[i-1,'name_list']))) 
    df.loc[i,'removed_count'] = len(list(set(df.loc[i-1,'name_list'])-set(df.loc[i,'name_list'])))