iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
AI & Data

資料三十-那些最基本的資料處理與分析技能系列 第 6

【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)


我是沒遇到需要用這個方向的啦,但可能有人會好奇所以就補一下會長怎樣

參考資料


上一篇
【Day05-遍歷】不要再只會用for迴圈了,你值得擁有更好的選擇-apply
下一篇
【Day07-篩選】我全都要?啊還是挑一下吧——在python中如何篩選list, dict, pd.DataFrame
系列文
資料三十-那些最基本的資料處理與分析技能30

尚未有邦友留言

立即登入留言