2016-08-23 81 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'])))