Pandas.concat連接DataFrame,Series的示例代碼
如何使用pandas.concat()函數(shù)連接pandas.DataFrame和pandas.Series。
將對以下內容進行說明。
- pandas.concat的基本用法()
- 指定要連接的對象:objs
- 連接方向的指定(垂直/水平):axis
- 指定連接方法(外部連接/內部連接):join
- pandas.DataFrame的連接
- pandas.Series的連接
- pandas.DataFrame和pandas.Series的連接
使用以下的pandas.DataFrame和pandas.Series為例。
import pandas as pd df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'], ? ? ? ? ? ? ? ? ? ? 'B': ['B1', 'B2', 'B3'], ? ? ? ? ? ? ? ? ? ? 'C': ['C1', 'C2', 'C3']}, ? ? ? ? ? ? ? ? ? ?index=['ONE', 'TWO', 'THREE']) print(df1) # ? ? ? ? A ? B ? C # ONE ? ?A1 ?B1 ?C1 # TWO ? ?A2 ?B2 ?C2 # THREE ?A3 ?B3 ?C3 df2 = pd.DataFrame({'C': ['C2', 'C3', 'C4'], ? ? ? ? ? ? ? ? ? ? 'D': ['D2', 'D3', 'D4']}, ? ? ? ? ? ? ? ? ? ?index=['TWO', 'THREE', 'FOUR']) print(df2) # ? ? ? ? C ? D # TWO ? ?C2 ?D2 # THREE ?C3 ?D3 # FOUR ? C4 ?D4 s1 = pd.Series(['X1', 'X2', 'X3'], index=['ONE', 'TWO', 'THREE'], name='X') print(s1) # ONE ? ? ?X1 # TWO ? ? ?X2 # THREE ? ?X3 # Name: X, dtype: object s2 = pd.Series(['Y2', 'Y3', 'Y4'], index=['TWO', 'THREE', 'FOUR'], name='Y') print(s2) # TWO ? ? ?Y2 # THREE ? ?Y3 # FOUR ? ? Y4 # Name: Y, dtype: object
pandas.concat的基本用法()
指定要連接的對象:objs
通過參數(shù)objs指定要連接的pandas.DataFrame和pandas.Series,指定類型為列表或元組。
df_concat = pd.concat([df1, df2]) print(df_concat) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4
要連接的對象的數(shù)量不限于兩個,可以是三個或更多。
df_concat_multi = pd.concat([df1, df2, df1]) print(df_concat_multi) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN
結果是創(chuàng)建了一個新的對象,原始對象保持不變。
連接方向的指定(垂直/水平):axis
垂直或水平方向由axis參數(shù)指定。 如果axis = 0,則它們是垂直鏈接的。默認設置為axis = 0,因此可以省略不寫。
df_v = pd.concat([df1, df2], axis=0) print(df_v) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4
axis = 1,水平方向上連接。
df_h = pd.concat([df1, df2], axis=1) print(df_h) # A B C C D # ONE A1 B1 C1 NaN NaN # TWO A2 B2 C2 C2 D2 # THREE A3 B3 C3 C3 D3 # FOUR NaN NaN NaN C4 D4
指定連接方法(外部連接/內部連接):join
參數(shù)join:指定列名(或行名)的并集,或者僅將公共部分保留。
join ='outer’是外部連接。列名(或行名)形成一個聯(lián)合,保留所有列(或行)。它是默認設置,因此可以省略不寫。在這種情況下,原始對象中列(或行)不存在的值將由的缺少值NaN代替。
join ='inner’是內部連接。僅保留具有相同列名(或行名)的列(或行)。
df_v_out = pd.concat([df1, df2], join='outer') print(df_v_out) # ? ? ? ? ?A ? ?B ? C ? ?D # ONE ? ? A1 ? B1 ?C1 ?NaN # TWO ? ? A2 ? B2 ?C2 ?NaN # THREE ? A3 ? B3 ?C3 ?NaN # TWO ? ?NaN ?NaN ?C2 ? D2 # THREE ?NaN ?NaN ?C3 ? D3 # FOUR ? NaN ?NaN ?C4 ? D4 df_v_in = pd.concat([df1, df2], join='inner') print(df_v_in) # ? ? ? ? C # ONE ? ?C1 # TWO ? ?C2 # THREE ?C3 # TWO ? ?C2 # THREE ?C3 # FOUR ? C4
水平方向。
df_h_out = pd.concat([df1, df2], axis=1, join='outer') print(df_h_out) # ? ? ? ? ?A ? ?B ? ?C ? ?C ? ?D # FOUR ? NaN ?NaN ?NaN ? C4 ? D4 # ONE ? ? A1 ? B1 ? C1 ?NaN ?NaN # THREE ? A3 ? B3 ? C3 ? C3 ? D3 # TWO ? ? A2 ? B2 ? C2 ? C2 ? D2 df_h_in = pd.concat([df1, df2], axis=1, join='inner') print(df_h_in) # ? ? ? ? A ? B ? C ? C ? D # TWO ? ?A2 ?B2 ?C2 ?C2 ?D2 # THREE ?A3 ?B3 ?C3 ?C3 ?D3
如何更改列名和行名,請參考下列連接。
pandas.DataFrame的連接
將pandas.DataFrames連接在一起時,返回的也是pandas.DataFrame類型的對象。
df_concat = pd.concat([df1, df2]) print(df_concat) # ? ? ? ? ?A ? ?B ? C ? ?D # ONE ? ? A1 ? B1 ?C1 ?NaN # TWO ? ? A2 ? B2 ?C2 ?NaN # THREE ? A3 ? B3 ?C3 ?NaN # TWO ? ?NaN ?NaN ?C2 ? D2 # THREE ?NaN ?NaN ?C3 ? D3 # FOUR ? NaN ?NaN ?C4 ? D4 print(type(df_concat)) # <class 'pandas.core.frame.DataFrame'>
pandas.Series的連接
如果是pandas.Series之間的連接,則垂直連接(默認值axis= 0)返回的也是pandas.Series類型的對象。
s_v = pd.concat([s1, s2]) print(s_v) # ONE ? ? ?X1 # TWO ? ? ?X2 # THREE ? ?X3 # TWO ? ? ?Y2 # THREE ? ?Y3 # FOUR ? ? Y4 # dtype: object print(type(s_v)) # <class 'pandas.core.series.Series'>
axis = 1時,水平方向連接,返回pandas.DataFrame類型的對象。
s_h = pd.concat([s1, s2], axis=1) print(s_h) # ? ? ? ? ?X ? ?Y # FOUR ? NaN ? Y4 # ONE ? ? X1 ?NaN # THREE ? X3 ? Y3 # TWO ? ? X2 ? Y2 print(type(s_h)) # <class 'pandas.core.frame.DataFrame'>
也可以使用參數(shù)join。
s_h_in = pd.concat([s1, s2], axis=1, join='inner') print(s_h_in) # X Y # TWO X2 Y2 # THREE X3 Y3
pandas.DataFrame和pandas.Series的連接
對于pandas.DataFrame和pandas.Series連接,水平連接(axis= 1)將pandas.Series添加為新列。列名稱是pandas.Series的名稱。
df_s_h = pd.concat([df1, s2], axis=1) print(df_s_h) # A B C Y # FOUR NaN NaN NaN Y4 # ONE A1 B1 C1 NaN # THREE A3 B3 C3 Y3 # TWO A2 B2 C2 Y2
也可以使用參數(shù)join。
df_s_h_in = pd.concat([df1, s2], axis=1, join='inner') print(df_s_h_in) # A B C Y # TWO A2 B2 C2 Y2 # THREE A3 B3 C3 Y3
垂直連接(axis = 0)。
df_s_v = pd.concat([df1, s2]) print(df_s_v) # A B C 0 # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN NaN Y2 # THREE NaN NaN NaN Y3 # FOUR NaN NaN NaN Y4
添加行,可以在.loc中指定新的行名稱并分配值,或使用append()方法。
df1.loc['FOUR'] = ['A4', 'B4', 'C4'] print(df1) # ? ? ? ? A ? B ? C # ONE ? ?A1 ?B1 ?C1 # TWO ? ?A2 ?B2 ?C2 # THREE ?A3 ?B3 ?C3 # FOUR ? A4 ?B4 ?C4 s = pd.Series(['A5', 'B5', 'C5'], index=df1.columns, name='FIVE') print(s) # A ? ?A5 # B ? ?B5 # C ? ?C5 # Name: FIVE, dtype: object df_append = df1.append(s) print(df_append) # ? ? ? ? A ? B ? C # ONE ? ?A1 ?B1 ?C1 # TWO ? ?A2 ?B2 ?C2 # THREE ?A3 ?B3 ?C3 # FOUR ? A4 ?B4 ?C4 # FIVE ? A5 ?B5 ?C5
到此這篇關于Pandas.concat連接DataFrame,Series的示例代碼的文章就介紹到這了,更多相關Pandas concat連接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Django中修改js css文件但瀏覽器無法及時與之改變的問題
今天小編就為大家分享一篇解決Django中修改js css文件但瀏覽器無法及時與之改變的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08python神經(jīng)網(wǎng)絡Keras常用學習率衰減匯總
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡Keras常用學習率衰減匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05