繁体   English   中英

检查 Dataframe 列中的元素是否在另一个 Pandas dataframe 行和 append 到新列中

[英]Check if elements from a Dataframe column are in another Pandas dataframe row and append to a new column

我有一个这样的 DataFrame:

卡萨 名称
独舞 Paleta De Padel 阿迪达斯 Metalbone CTRL
独舞 Zapatillas Running Under Armour Charged Stam...
独舞 Rompeviento Con Capucha 锐步 Woven Azu
独舞 Remera Michael Jordan 芝加哥公牛队

Df2

帕拉布拉 马卡报
水线 水线
阿德尼斯 阿德尼斯
广告 阿德尼斯
安德玛 安德玛
约旦 耐克
阿迪达斯 阿迪达斯
锐步 锐步

如何检查df['Name']每一行,查看该行是否包含Df2['Palabra']的值,在这种情况下获取Df2['Marca']的值并将其放入新列?。 结果应该是这样的:

卡萨 名称 马卡报
独舞 Paleta De Padel 阿迪达斯 Metalbone CTRL 阿迪达斯
独舞 Zapatillas Running Under Armour Charged Stam... 安德玛
独舞 Rompeviento Con Capucha 锐步 Woven Azu 锐步
独舞 Remera Michael Jordan 芝加哥公牛队 耐克

数据:

df

{'Casa': ['Solo Deportes', 'Solo Deportes', 'Solo Deportes', 'Solo Deportes'],
 'Name': ['Paleta De Padel Adidas Metalbone CTRL',
          'Zapatillas Running Under Armour Charged Stamin...',
          'Rompeviento Con Capucha Reebok Woven Azu',
          'Remera Michael Jordan Chicago Bulls']}

Df2

{'Palabra': ['Acqualine', 'Addnice', 'Adnnice', 'Under Armour', 'Jordan', 'Adidas', 'Reebok'], 
 'Marca': ['Acqualine', 'Addnice', 'Addnice', 'Under Armour', 'Nike', 'Adidas', 'Reebok']}

一个简单的解决方案是在生成器表达式中使用iterrowsnext迭代Df2并检查是否出现匹配项:

df1['Marca'] = df1['Name'].apply(lambda name: next((r['Marca'] for _, r in Df2.iterrows() if r['Palabra'] in name), float('nan')))

Output:

            Casa                                               Name         Marca
0  Solo Deportes              Paleta De Padel Adidas Metalbone CTRL        Adidas
1  Solo Deportes  Zapatillas Running Under Armour Charged Stamin...  Under Armour
2  Solo Deportes           Rompeviento Con Capucha Reebok Woven Azu        Reebok
3  Solo Deportes                Remera Michael Jordan Chicago Bulls          Nike

暂无
暂无

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

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