Pandas橫縱堆疊、主鍵合併、重疊合並相關操作

1.橫縱堆疊
import numpy as np
import pandas as pd
concat()堆疊
內外連接時用join
堆疊:根據行、列索引進行表的拼接,而不看元素取值
#建表
data=np.array([[1,2],[2,3],[4,5]])
df1=pd.DataFrame(data,columns=[‘A’,‘a’])
df2=pd.DataFrame(data,columns=[‘A’,‘B’])
print(df1,df2)
#縱向合併
print(pd.concat([df1,df2],axis=0,join=‘outer’))
print(pd.concat([df1,df2],axis=0,join=‘inner’))
#橫向合併
print(pd.concat([df1,df2],axis=1,join=‘inner’))
print(pd.concat([df1,df2],axis=1,join=‘outer’))
2.主鍵合併
import numpy as np
import pandas as pd
merge()拼接
內外連接時用how
主鍵合併:根據兩個表中元素取值是否相同來進行拼接(和行列索引無關)
left = pd.DataFrame({‘key1’: [‘K0’, ‘K0’, ‘K1’, ‘K2’],
‘key2’: [‘K0’, ‘K1’, ‘K0’, ‘K1’],
‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’],
‘B’: [‘B0’, ‘B1’, ‘B2’, ‘B3’]})
# print(left)
right = pd.DataFrame({‘key1’: [‘K0’, ‘K1’, ‘K1’, ‘K2’],
‘key2’: [‘K0’, ‘K0’, ‘K0’, ‘K0’],
‘C’: [‘C0’, ‘C1’, ‘C2’, ‘C3’],
‘D’: [‘D0’, ‘D1’, ‘D2’, ‘D3’]})
# print(right)

#主鍵拼接
#1.一個主鍵:(兩表中主鍵名稱一樣)
print(pd.merge(left, right, how=‘right’, on=‘key1’))
#2.多個主鍵:(兩表中主鍵名稱一樣)
print(pd.merge(left, right, how=‘left’, on=[‘key1’,‘key2’]))
#3.當兩個表中,多個主鍵名稱不一樣時,主鍵合併,顯示主鍵中一樣的參數,其他值不顯示
print(pd.merge(left, right, how=‘inner’, left_on=‘key2’,right_on=‘key1’))
#3.當兩個表中,多個主鍵名稱不一樣時,主鍵合併,除顯示主鍵中一樣的參數外其他值也顯示沒有的表中用NaN代替
print(pd.merge(left, right, how=‘outer’, left_on=‘key2’,right_on=‘key1’))
3.重疊合並
import numpy as np
import pandas as pd
‘’’
combine_first()合併
重疊合並:
當兩個表姐夠基本相同,但是表中都有缺失數據,可以利用重疊合並來拼接數據,構建一個完整的表
df1.combine_first((df2)):利用df2來完善df1,當df1與df2中都有數據的時候,以df1爲準(df1爲主表)
‘’’
dict1 = {‘ID’:[1,2,3,4,5,6,7,8,9],‘System’:[‘W10’,‘w10’,np.nan,‘w10’,np.nan,np.nan,‘w7’,‘w7’,‘w8’]}
dict2 = {‘ID’:[1,2,3,4,5,6,7,8,9],‘System’:[np.nan,np.nan,‘w7’,np.nan,‘w7’,‘w7’,‘w8’,np.nan,np.nan]}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
****# print(‘df1:’,df1)
**# print('df2: ',df2)
#以df1作爲主表進行重疊合並,df1裏的表若是空值用df2表裏補充,df1若有值就使用df1本身的值
print(df1.combine_first((df2)))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章