Pandas.concat连接DataFrame,Series的示例代码

Rae ·
更新时间:2024-11-13
· 1547 次阅读

目录

pandas.concat的基本用法()

连接方向的指定(垂直/水平):axis

指定连接方法(外部连接/内部连接):join

pandas.DataFrame的连接

pandas.Series的连接

pandas.DataFrame和pandas.Series的连接

如何使用pandas.concat()函数连接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
通过参数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

要连接的对象的数量不限于两个,可以是三个或更多。

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

结果是创建了一个新的对象,原始对象保持不变。

连接方向的指定(垂直/水平):axis

垂直或水平方向由axis参数指定。 如果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

参数join:指定列名(或行名)的并集,或者仅将公共部分保留。

join ='outer’是外部连接。列名(或行名)形成一个联合,保留所有列(或行)。它是默认设置,因此可以省略不写。在这种情况下,原始对象中列(或行)不存在的值将由的缺少值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

如何更改列名和行名,请参考下列连接。

01_Pandas.DataFrame的行名和列名的修改

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'>

也可以使用参数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

也可以使用参数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连接内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



concat 示例 dataframe pandas

需要 登录 后方可回复, 如果你还没有账号请 注册新账号