【发布时间】:2018-10-01 17:15:30
【问题描述】:
我有两个熊猫数据框。
df1 :
ACNo Product
1 12340 100% Hot Care
2 23867 Auction5
3 98372 Edition
4 09837 Diet Parameter
5 54332 Load
df2 :
ProdDetail AttrName
1 12345.567 Age Confirmation
2 Model1 Count\100% Hot Care Recipe
3 123445\Handle Improve
4 Diet Edition\Parameter Amount
我想在 df2 的 ProdDetail 列上查找来自 df1 的 Product 列,并在 df1 中添加 AttrName 列以及相应的值。字符串可以在 ProdDetails 中的任意位置,基本类似于 excel 中的通配符功能。如果字符串出现在 df2 的 ProdDetail 中,我想提取相应的 AttrName。结果 df1 数据框应如下所示
ACNo Product AttrName
1 12340 100% Hot Care Recipe
2 23867 Auction5 N/A
3 98372 Edition Amount
4 09837 Diet Parameter N/A
5 54332 Load N/A
有人可以帮我解决这个问题吗?我尝试了多种方法,但无法找到解决方案。我看到了一个类似的帖子,但它是在 R 中,在 Python 中找不到。以下是我尝试过的一种方式
ip=df1['Product']
def lookup_prod(ip):
return df2[(df2['ProdDetail'].str.contains(ip, na=False))]['AttrName']
df1['AttrName'] = data.apply(lambda row: lookup_prod(row['ProdDetails']), axis=1)
df1 = pd.DataFrame({'ACNo': ['12340', '23867', '98372', '09837', '54332'],
'Product': ['100% Hot Care', 'Auction5', 'Edition', 'Diet Parameter', 'Load']})
df2 = pd.DataFrame({'ProdDetail': [12345.567, r'Model1 Count\100% Hot Care',
r'123445\Handle', r'Diet Edition\Parameter'],
'AttrName': ['Age Confirmation', 'Recipe' , 'Improve', 'Amount']})
【问题讨论】:
标签: python string pandas dataframe