pandas數據統計插件的連接函數concat()妙用,靈活處理數據對象!


大家知道在pandas的數據框架中,數據格式對象主要有兩種,一種是Series,另一種則是比較常見的DataFrame數據對象。pandas.concat()連接函數主要是用於處理這兩種對象的數據連接!

file

【閱讀全文】

函數說明

'''
cancat()函數

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
          
參數說明:
objs:Series,DataFrame或Panel對象的序列或映射。如果傳遞了dict,則排序的鍵將用作鍵參數,除非它被傳遞,在這種情況下,將選擇值(見下文)。任何無對象將被靜默刪除,除非它們都是無,在這種情況下將引發一個ValueError。
axis:{0,1,...},默認為0。沿着連接的軸。
join:{'inner','outer'},默認為“outer”。如何處理其他軸上的索引。outer為聯合和inner為交集。
ignore_index:boolean,default False。如果為True,請不要使用並置軸上的索引值。結果軸將被標記為0,...,n-1。如果要連接其中並置軸沒有有意義的索引信息的對象,這將非常有用。注意,其他軸上的索引值在連接中仍然受到尊重。
join_axes:Index對象列表。用於其他n-1軸的特定索引,而不是執行內部/外部設置邏輯。
keys:序列,默認值無。使用傳遞的鍵作為最外層構建層次索引。如果為多索引,應該使用元組。
levels:序列列表,默認值無。用於構建MultiIndex的特定級別(唯一值)。否則,它們將從鍵推斷。
names:list,default無。結果層次索引中的級別的名稱。
verify_integrity:boolean,default False。檢查新連接的軸是否包含重復項。這相對於實際的數據串聯可能是非常昂貴的。
copy:boolean,default True。如果為False,請勿不必要地復制數據。
'''

Series 數據處理

普通合並

# 導入pandas數據處理庫
import pandas as pd

# 初始化series_1數據對象
series_1 = pd.Series(['a', 'b','c'])

# 初始化series_2數據對象
series_2 = pd.Series(['c', 'd'])

# 合並series_1、series_2
res = pd.concat([series_1, series_2])

# 打印合並結果
print(res)
# 0    a
# 1    b
# 2    c
# 0    c
# 1    d

忽略索引合並

# 合並series_1、series_2,忽略索引
res = pd.concat([series_1, series_2],ignore_index=True)

# 打印合並結果
print(res)
# 0    a
# 1    b
# 2    c
# 3    c
# 4    d

添加分層索引合並

# 合並series_1、series_2,忽略索引
res = pd.concat([series_1, series_2],keys=['series_1','series_2'])

# 打印合並結果
print(res)
# series_1  0    a
#           1    b
#           2    c
# series_2  0    c
#           1    d

添加數據列合並

# 合並series_1、series_2,添加數據列名
res = pd.concat([series_1, series_2],keys=['series_1','series_2'],names=['Series ID', 'index'])

# 打印合並結果
print(res)
# Series ID  index
# series_1   0        a
#            1        b
#            2        c
# series_2   0        c
#            1        d

DataFrame 數據處理

合並兩個相同列的DataFrame對象

# 創建DataFrame對象dataframe_1
dataframe_1 = pd.DataFrame([['coding', 'python'], ['type', '1']], columns=['名稱', '類型'])

# 創建DataFrame對象dataframe_2
dataframe_2 = pd.DataFrame([['coding', 'java'], ['type', '2']], columns=['名稱', '類型'])

# 合並兩個列相同的DataFrame對象dataframe_1、dataframe_2
res = pd.concat([dataframe_1, dataframe_2])

# 打印合並DataFrame對象
print(res)
#        名稱      類型
# 0  coding  python
# 1    type       1
# 0  coding    java
# 1    type       2

合並重疊的DataFrame

# 創建DataFrame對象dataframe_3
dataframe_3 = pd.DataFrame([['coding', 'java','91'], ['type', '2','93']], columns=['名稱', '類型','評分'])

# 合並兩個不相同的DataFrame對象dataframe_1、dataframe_3
# 合並時不存在的列則使用Nan值進行合並
res = pd.concat([dataframe_1, dataframe_3],sort=False)

# 打印合並DataFrame對象
print(res)
#        名稱      類型   評分
# 0  coding  python  NaN
# 1    type       1  NaN
# 0  coding    java   91
# 1    type       2   93

# join='inner',去除重疊交叉的列
res = pd.concat([dataframe_1, dataframe_3],join='inner')
print(res)
# 0  coding  python
# 1    type       1
# 0  coding    java
# 1    type       2

本文由WeiXin公眾號【python 集中營】一鍵發布,更多精彩文章、視頻資料即可領取!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM