数据规整化:pandas 求合并数据集(交集并集等)

时间:2023-03-08 17:22:47

数据集的合并或连接运算是通过一个或多个键将行链接起来的。这些运算是关系型数据库的核心。pandas的merge函数是对数据应用这些算法的这样切入点。

默认是交集, inner连接

列名不同可以分别指定:

数据规整化:pandas 求合并数据集(交集并集等)

其他方式还要‘left’、‘right’以及“outer”。外链接求取的是键的并集, 组合了左连接和右连接的效果。

数据规整化:pandas 求合并数据集(交集并集等)

how 的作用是合并时候以谁为标准,是否保留NaN值

数据规整化:pandas 求合并数据集(交集并集等)

多对多

数据规整化:pandas 求合并数据集(交集并集等)

多对多 连接产生的行的笛卡尔积。由于左边的DataFrame有3个‘b’行, 右边的有2个,所以最终结果中

就有6个‘b’行。

数据规整化:pandas 求合并数据集(交集并集等)

根据多个键进行合并, 传入一个由列明组成的列表即可:

left = DataFrame(
{"key1": ['foo', 'foo', 'bar'],
"key2": ['one', 'two', 'one'],
"lval": [, , ]
}
)
right = DataFrame(
{"key1": ['foo', 'foo', 'bar', 'bar'],
"key2": ['one', 'one', 'one', 'two'],
"rval": [, , , ]
}
)
print(left)
print(right)
pm = pd.merge(left, right, on=["key1", "key2"], how="outer")
print(pm)

数据规整化:pandas 求合并数据集(交集并集等)

数据规整化:pandas 求合并数据集(交集并集等)

on与left_on 和right_on的区别

数据规整化:pandas 求合并数据集(交集并集等)

这个是left_on 和right_on

数据规整化:pandas 求合并数据集(交集并集等)

去重或更改后缀

数据规整化:pandas 求合并数据集(交集并集等)

merge函数的参数

数据规整化:pandas 求合并数据集(交集并集等)

索引上的合并

数据规整化:pandas 求合并数据集(交集并集等)

merge方法求取连接键的并集

数据规整化:pandas 求合并数据集(交集并集等)

对于层次化索引的数据

这个时候必须以列表的形式指明用作合并键的多个列(注意对重复索引的处理)

lefth = DataFrame({'key1':[ 'Ohio', 'Ohio', 'Ohio','Nevada', 'Nevada',],
"key2":[, , ,, ],
"data":np.arange(.)
}) righth = DataFrame(np.arange().reshape((, )),
index=[['Nevada', 'Nevada', 'Ohio', 'Ohio', 'Ohio', 'Ohio'],
[, , , , , ]],
columns=['event1', 'event2']
) print(lefth)
print(righth)
pm = pd.merge(lefth, righth,left_on=['key1', 'key2'], right_index=True)
print(pm)

数据规整化:pandas 求合并数据集(交集并集等)

索引并集

数据规整化:pandas 求合并数据集(交集并集等)

DataFrame.join实例方法

它能更为方便地实现索引合并。它还可用于和合并多个带有相同或相似索引的DataFrame对象, 而不管他们

之间有重叠的列。

数据规整化:pandas 求合并数据集(交集并集等)

print(left1.join(right1, how='inner'))

left2.join([1, 2], how='outer')  #多个