pandas怎么做连接匹配操作?

原始df有1000多个名称

str.contains在name带有Paper且Item_Name带有Paper Bag时起作用,但在其他情况下则不起作用。 因此,在我的示例中,它适用于df1的行1,3,4,5,但不适用于第2和6行。因此,它将不会将df1的第2行与df2的第3行映射

因此,如果您可以帮助我修改代码,以便它也可以帮助进行匹配


我们正在使用apply()将自定义的matcher()函数应用于df1['Name']列的每个行值。 在我们的matcher()函数中,我们将df2转换为以Item_ID为键,以Name为值的字典。 然后,我们可以检查当前行值query是否存在于df1的Name值的any()中(已通过lower()转换为小写字母),如果是,则可以添加Item_ID


可以用pandas.merge这个函数,具体可以看下面参数解释动手试验一下,比如现试试left ringt on三个参数,其他用默认,成功了,再试试 how

你的截图数据如果是1个表里的,pandans读取全表后,注意分字段提取。举例:

on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。

left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。

right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。

默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。

sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。

suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。

copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。

indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。

Vlookup本质上用于垂直排列的数据。 Vlookup是一种操作, 用于根据某些条件合并两个不同的数据表, 其中两个表之间必须至少有一个公共属性(列)。执行完此操作后, 我们得到一个表, 该表由两个表中的所有数据组成, 数据与之匹配。

我们可以用merge()函数在Pandas中执行Vlookup。合并功能与SQL中的Join的功能相同。我们可以对表1或表2执行合并操作。合并2个表的方式可能不同。

让我们考虑要对其执行操作的2个表。第一个表格包含学生的信息, 第二列包含他们所报名的各个课程的信息。下面的代码告诉两个表格中包含的信息。

在不同类型的联接上执行Vlook

内部联接:内连接只生成一个输出数据帧,该数据帧只包含在这两行中满足条件的行。要执行内部连接,可以在how中指定inner作为关键字。

左联接:左联接操作提供来自第一个数据帧的所有行和来自第二个数据帧的匹配行。如果第二个数据帧中的行不匹配, 则将其替换为NaN。

右连接:右连接有点类似于左连接, 在左连接中, 输出数据帧将包含第二个数据帧中的所有行和第一个数据帧中的匹配行。如果第一行中的行不匹配, 则将其替换为NaN

外部联接:外部联接提供由两个数据帧中的行组成的输出数据帧。如果行匹配, 将显示值, 否则将显示不匹配的NaN。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

以上是 的全部内容, 来源链接:

我要回帖

更多关于 pandas数据匹配 的文章

 

随机推荐