【问题标题】:Check if value from one dataframe exists in another dataframe and create column检查一个数据框中的值是否存在于另一个数据框中并创建列
【发布时间】:2021-12-25 05:36:06
【问题描述】:

我希望比较两个不同数据集中列的值,并创建一个包含匹配结果的列。

DF1:

 Dates
0   2021-10-01
1   2021-10-02
2   2021-10-03
3   2021-10-04
4   2021-10-05
5   2021-10-06
6   2021-10-07

DF2 =

StartDate    User
2021-10-04   Doe, John
2021-10-07   Ann, Mary
2021-10-07   Doe, John

预期结果

DF1:

 Dates            User
0   2021-10-01
1   2021-10-02
2   2021-10-03
3   2021-10-04    Doe, John
4   2021-10-05
5   2021-10-06
6   2021-10-07    Ann, Mary; Doe, John

我可以使用以下代码查看匹配项:

df1= df2.loc[df2['StartDate'].isin(df1['Dates']), 'User']

我可以返回一个 1/0 与以下内容:

df1= df1.assign(result=df1['Dates'].isin(df2['StartDate']).astype(int))

但是,我似乎无法将它们合并

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    df.join(df2.groupby('StartDate')['User'].apply('; '.join), how='left', on='Dates').fillna('')
    

    输出:

    >>> df
           Dates          User
    0 2021-10-01              
    1 2021-10-02              
    2 2021-10-03              
    3 2021-10-04         Test1
    4 2021-10-05              
    5 2021-10-06              
    6 2021-10-07  Test2, Test1
    

    【讨论】:

    • 谢谢你,我可以让它工作。但是,我对我的数据集进行了轻微更改,现在将用户显示为“姓氏,名字”,当我使用此代码时,它只会拉一个用户而不是两个?
    • 你是说User的每个值都是'firstname, lastname'格式的字符串?
    • 正确。我已更新问题以显示这一点
    • 查看我的最新更新,@TiiTcHY。
    • 似乎在影响搜索的列之一中有一个空格。我现在已经设法解决了这个问题。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多