【问题标题】:Merge two pandas dataframe and create a new binary column based on condition合并两个熊猫数据框并根据条件创建一个新的二进制列
【发布时间】:2022-01-08 01:03:33
【问题描述】:

我有两个数据框 - 有影响力的医学期刊列表和来自更广泛列表期刊的文章列表。

journal_id  journal_title   
1            Journal 1  
2            Journal 2  
3            Journal 3  
    
article_id  journal_title   article_title
1             Journal 1       Title 1
2             Journal 2       Title 2
3             Journal 18      Title 3
4             Journal 55      Title 4

我想合并两个数据帧,并在第二个数据帧中创建一个带有文章标题的新列,这将标记为二进制输出,其中文章是否来自有影响力的期刊(二进制输出)。

预期输出

article_id  journal_title   article_title influential
1             Journal 1         Title 1      1
2             Journal 2         Title 2      1
3             Journal 18        Title 3      0
4             Journal 55        Title 4      0

欣赏想法!

【问题讨论】:

  • 您可以使用.isin() 方法。这似乎是同一个问题:link

标签: python pandas merge


【解决方案1】:

你也可以试试这个

df2 = df2.merge(df1['journal_title'], how='left', on='journal_title', indicator=True) # merges & creates indicators for matches
df2['influential'] = df2['_merge'].apply(lambda x: 1 if x == 'both' else 0) # if matches (both) then 1 else 0 for (left_only & right_only)
df2.drop(['_merge'], axis=1, inplace=True) #drops the column

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

可以先将值设置为False,满足条件的再设置为true。

df2['influential']=0
df2['influential'][df2['Journal'].isin(df1['Journal'].values)]=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 2022-08-02
    • 2017-06-11
    • 2016-01-01
    • 2018-09-16
    • 2017-12-27
    相关资源
    最近更新 更多