在字符串列表中查找字符串并在中创建新列

2024-09-26 18:13:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新手,在这里尝试解决性能问题。 我有两个数据帧

数据帧1

col1        col2
holiday     party
party       party
bagel       snack
fruit       snack

数据帧2:

col1                            col2
bagel wednesday                 snack               
coffee for party                snack
holiday party                   party

数据框1有2列。我需要在DataFrame2.col1中查找DataFrame1.col1,并在DataFrame2.col2中使用DataFrame1.col2值创建一个新列 目前,我正在使用一个循环来实现这一点,这需要很长时间。我正在寻找一个有效的方法来做到这一点。另外,如果我得到多个匹配,我应该始终使用从DataFrame1找到的第一个匹配。例如,“coffee For party”有两个匹配项,分别来自DF1、snack和party,在这种情况下,“snack”应该从DF1.col2中选择。你知道吗

谢谢 瑞尔


Tags: 数据party性能col2col1df1coffeeholiday
1条回答
网友
1楼 · 发布于 2024-09-26 18:13:54

我认为您必须循环一周中的几天(但不是df2的所有行(嗯,测向列str.contains将以优化的方式为您执行内部循环)。你知道吗

for item in df1.col2.unique():
    for idx, row in df1[df1.col2==item].iterrows():
        df2.loc[df2.col1.str.contains(row.col1), 'col3'] = item

相关问题 更多 >

    热门问题