【问题标题】:How to compare two dataframe columns to see if value in one column is in object of other column如何比较两个数据框列以查看一列中的值是否在另一列的对象中
【发布时间】:2023-03-23 21:18:01
【问题描述】:

我想比较数据框中的两个不同列(称为 station_programming_df)。我有一个包含整数的数据框列(称为“facility_id”)。我有第二个数据框列,其中包含一个数据框对象(其中包含一系列整数)(称为 'parsed_final_participant_val')。我想查看第一列中的整数是否在具有数据框对象的列(第二列)中。如果为真,我想在新列中返回“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)

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas compare


    【解决方案1】:

    使用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
    

    【讨论】:

    【解决方案2】:

    您可以使用df.applyin

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2021-04-28
      • 2023-02-22
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多