PANDAS 資料合併與重塑(concat篇)

2021-07-22 17:05:26 字數 2716 閱讀 9883

pandas作者wes mckinney 在【python for data analysis】中對pandas的方方面面都有了乙個權威簡明的入門級的介紹,但在實際使用過程中,我發現書中的內容還只是冰山一角。談到pandas資料的行更新、表合併等操作,一般用到的方法有concat、join、merge。但這三種方法對於很多新手來說,都不太好分清使用的場合與用途。今天就pandas官網中關於資料合併和重述的章節做個使用方法的總結。

concat函式是在pandas底下的方法,可以將資料根據不同的軸作簡單的融合
pd.concat(objs, axis=

0, join

='outer', join_axes=

none, ignore_index=

false,

keys=

none, levels=

none, names=

none, verify_integrity=

false)

引數說明objs: series,dataframe或者是panel構成的序列lsit

axis: 需要合併鏈結的軸,0是行,1是列

join:連線的方式 inner,或者outer

其他一些引數不常用,用的時候再補上說明。

# 現將表構成list,然後在作為concat的輸入

in [4]: frames = [df1, df2, df3]

in [5]: result = pd.concat(frames)

要在相接的時候在加上乙個層次的key來識別資料源自於哪張表,可以增加key引數

in [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
效果如下

當axis = 1的時候,concat就是行對齊,然後將不同列名稱的兩張表合併

加上join引數的屬性,如果為』inner』得到的是兩表的交集,如果是outer,得到的是兩表的並集。

如果有join_axes的引數傳入,可以指定根據那個軸來對齊資料

例如根據df1表對齊資料,就會保留指定的df1表的軸,然後將df4的表與之拼接

如果兩個表的index都沒有實際含義,使用ignore_index引數,置true,合併的兩個表就睡根據列欄位對齊,然後合併。最後再重新整理乙個新的index。

前面提到的keys引數可以用來給合併後的表增加key來區分不同的表資料**

in [34]: s2 = pd.series(['x0', 'x1', 'x2', 'x3'], index=['a', 'b', 'c', 'd'])
如果遇到兩張表的列欄位本來就不一樣,但又想將兩個表合併,其中無效的值用nan來表示。那麼可以使用ignore_index來實現。

in [36]: dicts = [,

....: ]

....:

下一章,我們將繼續介紹pandas中其他進行資料合併和重塑的方法模組——join & mergin

pandas資料合併與重塑(concat)

concat函式是在pandas底下的方法,可以將資料根據不同的軸作簡單的融合 pd.concat objs,axis 0,join outer join axes none ignore index false keys none levels none names none verify int...

pandas資料重塑

python for data analysis stack 將資料的列 旋轉 為行 unstack 將資料的行 旋轉 為列 pivot 前兩個引數值分別用作行和列索引的列名,最後乙個引數則是用於填充dataframe的資料列的列名。如果忽略最後乙個引數,得到的dataframe就會帶有層次化的列。...

pandas資料合併

pandas 提供了三種主要方法可以對資料進行合併 pandas.merge 方法 資料庫風格的合併 例如,通過merge 方法將兩個dataframe合併 on name 的意思是將name列當作鍵 預設情況下,merge做的是內連線 inner 即鍵的交集。其他方式還有左連線 left 右連線 ...