栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas 合并

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas 合并

一、 按照行合并 1. append

用法和列表一样,不用在意参数里是不是有空列表(用列表代替一个参数),其他几个好像都不可这样

a = []
b = np.arange(5)
print(a)
print(b)
d = np.append(a,b)
print(d)
---------输出----
[]
[0 1 2 3 4]
[0. 1. 2. 3. 4.]
2. c_

np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等

#例一
a = np.arange(5)
b = np.arange(5)
print(a)
print(b)
d = np.c_[a,b]
print(d)
------输出-------------
[0 1 2 3 4]
[0 1 2 3 4]
[[0 0]
[1 1]
[2 2]
[3 3]
[4 4]]

#例二
a = np.array([[1, 2, 3], [7, 8, 9]])

b = np.array([[4, 5, 6], [1, 2, 3]])
print(a)
print(b)
# d = np.column_stack((a,b))
d = np.c_[a,b]
print(d)
-------输出--------
[[1 2 3]
[7 8 9]]
[[4 5 6]
[1 2 3]]
[[1 2 3 4 5 6]
[7 8 9 1 2 3]]
3. hstack
a = np.arange(5)
b = np.arange(5)
d = np.hstack((a, b))
print(a)
print(b)
print(d)
-----输出------
[0 1 2]
[0 1 2 3 4 5 6]
[0 1 2 0 1 2 3 4 5 6]

特殊情况,迭代,需要再循环外执行一次d = np.hstack((a, b)),也就是hstack的参数内不能有0数组。然后需要双括号,合并成一个参数

a = np.arange(5)
b = np.arange(5)
d = np.hstack((a, b))
begin = time.time()
for n in range(0,1280):
d = np.hstack((d, b))
end = time.time()
print(d)
print(len(d))
print("花费时间:", end - begin)
-------输出------
[0 1 2 ... 2 3 4]
6410
花费时间: 0.00699305534362793
4. row_stack

也是两个参数两个括号

a = np.array([[1, 2, 3], [7, 8, 9]])

b = np.array([[4, 5, 6], [1, 2, 3]])
print(a)
print(b)
d = np.row_stack((a,b))
# d = np.c_[a,b]
print(d)
------输出--------
[[1 2 3]
 [7 8 9]]

[[4 5 6]
 [1 2 3]]

[[1 2 3]
 [7 8 9]
 [4 5 6]
 [1 2 3]]
二、 按列合并 1 . c_r

np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
同上

2. column_stack

同上

3. vstack

同上

三、 按轴2合并

注意括号的个数,这个是在轴二上

a = np.array([1,2])
b = np.array([3,4])
print(np.dstack((a,b)))
---------输出-------
[[[1 3]
[2 4]]]
4、 多数组合并

concatenate()函数
效率应该比append高,但是要求数组长度相同形状,比如一维,相同的二维等

numpy.concatenate((a1,a2,...), axis=0)

a = np.arange(5)
b= np.zeros(4)
c = np.concatenate((a,b))
print(c)
#[0. 1. 2. 3. 4. 0. 0. 0. 0.]

时间对比(一维)

b=np.zeros(45875200)
a = np.arange(143360)

begin1 = time.time()
for n in range(0,320):  # 切片赋值
b[143360*n:143360+143360*n]=a
end1 = time.time()
print(b[5656:5666])
print("花费时间:", end1 - begin1)

c = []
begin2 = time.time()
for n in range(0,320):
c= np.append(c,a)
end2 = time.time()
print(c[5656:5666])
print("append 花费时间:", end2 - begin2)

d = []
begin3 = time.time()
for n in range(0,320):
d = np.concatenate((d,a))
end3 = time.time()
print(d[5656:5666])
print("concatenate 花费时间:", end3 - begin3)

输出

[5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.]
花费时间: 0.10589170455932617
[5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.]
append 花费时间: 25.331040859222412
[5656. 5657. 5658. 5659. 5660. 5661. 5662. 5663. 5664. 5665.]
concatenate 花费时间: 25.269352912902832
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844479.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号