[英]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.D
的True
或False
值以填充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.