我有一个非常大的数据帧,其 struct 通常是这样的:
df= pd.DataFrame({'org_id': [12023, 34340, 12023, 34953], #organization id
'year': [2010, 2010, 2011, 2012], #year of organization data
'2010_present': [1,1,0,0], #Dummy variable indicating whether the df contains an org's data for 2010
'2011_present': [1,0,1,0], #Dummy variable indicating whether the df contains an org's data for 2011
'2012_present': [0,0,0,1] #Dummy variable indicating whether the df contains an org's data for 2012
})
现在,我正在try 创建一个列(‘Following_y’),该列指示组织的数据是否存在于下一年的数据框中.例如,2010年组织12023的行将获得值1,因为组织12023的S数据也出现在2011年的数据框中.
数据帧的最新年份的行将得到np.nan的输入.(例如:2012年的组织条目将在‘Following_y’列中获得NA).基于以上内容,它将如下所示:
df['following_y']: [1,0,0,np.nan]
我认为解决这一问题的最好方法是使用如下所示的分组转换组合:
for year in list(df.year.unique())[-1]:
df['following_y']=df.loc[df['year']==year].groupby('org_id')[str(year+1)+'_present'].transform(lambda x: 1 if x==1 else 0)
但是,我收到以下错误:ValueError:序列的真值不明确.使用a.Empty、a.bool()、a.Item()、a.any()或a.all().
我认为这与我的lambda函数的x==1部分有关(也许我的Groupby Series对象不知何故不能使用这种if/Else格式?)在阅读了几个小时的帮助页面后,我将非常感激您能提供的任何建议或帮助!