我有两个熊猫数据帧。在
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中出现了string,我想提取相应的AttrName。结果df1数据帧应该如下所示
^{pr2}$有谁能用python帮我解决这个问题吗?我尝试了多种方法,但都没能找到解决办法。我看到了一个类似的帖子,但它是在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']})
一种方法是将
pd.Series.apply
与自定义函数和for
循环一起使用:示例2
此方法仍然有效:
^{pr2}$我想
str.contains
还在这里工作相关问题 更多 >
编程相关推荐