我想比较数据帧中的两个不同列(称为station_programming_df(。 我有一个包含整数的数据帧列(称为"facility_id"(。 我有第二个数据帧列,其中包含一个数据帧对象(其中包含一系列整数((称为"parsed_final_participant_val"(。 我想看看第一列中的整数是否在带有数据框对象的列(第二列(中。 如果为 true,我想在新列中返回"1"(即"master_color"(
我尝试了各种方法,包括使用 python 的"isin"函数,它不返回错误,但也不返回正确的数量。 我也尝试转换数据类型,但没有运气。
station_programming_df['master_color']=np.where(station_programming_df['facility_id'].isin(station_programming_df['final_participants_val']),1,0 )
以下是我使用的数据帧的样子:
数据:
facility_id,final_participants_val,master_color
35862,"62469,33894,33749,34847,21656,35396,4624,69571",0
35396,"62469,33894,33749,34847,21656,35396,4624,69571",0
虽然没有返回错误消息,但我找不到任何匹配项。第二行应在master_color列中返回"1"。
我想知道这是否与它如何解释该系列有关(final_participants_val(
任何帮助将不胜感激。
使用DataFrame.apply
:
station_programming_df['master_color']=station_programming_df.apply(lambda x: 1 if str(x['facility_id']) in x['final_participants_val'] else 0,axis=1)
print(df)
facility_id final_participants_val master_color
0 35862 62469,33894,33749,34847,21656,35396,4624,69571 0
1 35396 62469,33894,33749,34847,21656,35396,4624,69571 1
您可以使用df.apply
和in
。
station_programming_df['master_color'] = station_programming_df.apply(lambda x: str(x.facility_id) in x.final_participants_val, axis=1)
facility_id final_participants_val master_color
0 35862 62469,33894,33749,34847,21656,35396,4624,69571 False
1 35396 62469,33894,33749,34847,21656,35396,4624,69571 True