繁体   English   中英

根据另一个 dataframe 中列的 if 语句填充 dataframe 中的列 - Python

[英]Populate a column in a dataframe based on if statement for column in another dataframe - Python

假设 dataframe 1,df1 如下所示

    A B C
    1 2 a
    3 4 c
    3 4 e

我想创建一个 D 列,仅当 C 列的值与 dataframe 2 中的 B 列匹配时,其中 df2 如下所示:

    A B    C    D E
    1 2   a,d   4 5
    2 3   d,c   3 6
    3 4   f,e,j 7 2

如果 df1['C'] == df2['C'], 返回 df2['D'] 中的相应值 所以我想要的 df1 新列 D 中的结果是

    A B C D
    1 2 a 4
    3 4 c 3
    3 4 e 7

如您所见,在 df2['C'] 中,它在列中有多个值,只要 df1['C'] 匹配其中一个值,则满足条件并应填充新列“D”

我试过 df1['D'] = np.where(df1['C']==df2['C'], df2['D']),它没有用。

非常感谢您的帮助,谢谢。

您可以使用df2.C.str.split(',')从您的列C创建一个 python 列表,然后使用zip为每个 dataframe 的每一行创建一个元组。列表理解将使用s1 in s2生成一个列出可用于df2.DTrueFalse值以填充df1中的新D列。

contain = [s1 in s2 for s1, s2 in zip(df1.C, df2.C.str.split(','))]
df1['D'] = df2.D[contain]

暂无
暂无

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

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