【Day06-合并】发动魔法卡,融合——在python中如何合并list, dict, set, np.array, pd.DataFrame?

在处理资料的过程中
很常会需要面对到将两笔分开处理好的资料合并起来的情况
因此今天就来谈一下在python中要如何对常见的那些资料类型进行合并吧

大哥哥
不是这种合并

list

# 合并两个list
list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
list3 
# [1, 2, 3, 4, 5, 6]

dict

# 合并两个dict
dict1 = {"a":1, "b":2, "c":3}
dict2 = {"e":4, "f":5}
dict3 = dict(dict1) # 先复制一份过去
dict3.update(dict2) # 剩下的用update的
dict3 
# {'a': 1, 'b': 2, 'c': 3, 'e': 4, 'f': 5}

set

# 合并两个set
set1 = {1,2,3}
set2 = {4,5,6}
set3 = set1 | set2 # 用or来合并
set3 
# {1, 2, 3, 4, 5, 6}

numpy.array

这边根据方向的不同一共有三种合并方式

# 合并两个numpy向量
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

axis=0按照最外层元素顺序

# 按照最外层元素顺序
np.concatenate((a, b), axis=0)
# array([[1, 2],
#        [3, 4],
#        [5, 6]])

a为例子,其最外层的顺序应该是[1,2]然後[3,4]
所以按照这个顺序将後面的元素再接起来即是原本的

axis=1按第1层里面元素顺序

# 按第1层里面元素顺序
np.concatenate((a, b.T), axis=1) # b有转置
# array([[1, 2, 5],
#        [3, 4, 6]])

一样以a为例子,对於它来说第1层的元素去排顺序应该是1,3(都是排第1个的),然後2,4(都是排第2个的),再把b.T当第三个给接上来
而这边的b如果不转置的话会因为形状不合而接不上

axis=None全部摊平

# 全部摊平
np.concatenate((a, b), axis=None)
# array([1, 2, 3, 4, 5, 6])

不考虑多维度的向量,全部压成1维之後接起来

三种方向的比较图

pandas.DataFrame

import pandas as pd
df1 = pd.DataFrame({"a":[1,2], "b":[3,4]})
df2 = pd.DataFrame({"a":[10], "b":[20]})

df1

df2

一般来说按照axis=0(可省略)合并

pd.concat([df1,df2],axis=0) # aixs=0可以省略


将要合并的DataFrame们放在一个list里面,然後呼叫pd.concat就可以得到合并好的DataFrame

axis=1的效果

pd.concat([df1,df2],axis=1)


我是没遇到需要用这个方向的啦,但可能有人会好奇所以就补一下会长怎样

参考资料


<<:  Day 9 - HTML

>>:  D20: 工程师太师了: 第10.5话

OTA(Over-The-Air Technology)测试环境建立教学

缘由: 相信很多人有同感,公司里总会有一些必须要应付的人(误),自己测试完产出ipa档後,提供给公司...

[Day 18] 资料整理

一、说明 今天基本上就只是把前两天的东西包成函式而已, 这样以後就不用每次都去FinMind捞资料了...

Day2 甚麽是Vue?

昨天我们简单的介绍框架。 那今天我们就来说说vue.js到底是甚麽吧 Vue.js是一个用於建立使用...

DAY26 - 展现成果,建立 firestore 动态与复杂的查询

建立动态查询 还记得之几篇一开始如何使用条件查询 firestore 的资料吗? this.fir...

Day26 D3js 浪漫复刻ExpertOption的养眼图表

D3js 浪漫复刻ExpertOption的养眼图表 用途 在以往实现d3图表时,多半是功能优先,可...