繁体   English   中英

检查一个数据框中的值是否存在于另一个数据框中并创建列

[英]Check if value from one dataframe exists in another dataframe and create column

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

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))

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

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

你想做两件事:

  1. 结合日期的 DF2 结果
  2. 在日期加入或合并 DF2 与 DF1

从这个答案开始,将您的 DF2 聚合成所需的形式(即,在 col User 中有 Test2、Test 1):

如何使用熊猫将多行合并为一行

获取结果,确保它是一个 Dataframe,然后使用 join(或合并!)现在按照此处给出的示例适当地组合事物:

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM