在處理資料的過程中
很常會需要面對到將兩筆分開處理好的資料合併起來的情況
因此今天就來談一下在python中要如何對常見的那些資料類型進行合併吧
不是這種合併
# 合併兩個list
list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
list3
# [1, 2, 3, 4, 5, 6]
# 合併兩個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
set1 = {1,2,3}
set2 = {4,5,6}
set3 = set1 | set2 # 用or來合併
set3
# {1, 2, 3, 4, 5, 6}
這邊根據方向的不同一共有三種合併方式
# 合併兩個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維之後接起來
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)
我是沒遇到需要用這個方向的啦,但可能有人會好奇所以就補一下會長怎樣