怎么使用Pandas.concat连接DataFrame和Series

其他教程   发布日期:2023年06月27日   浏览次数:441

这篇文章主要介绍了怎么使用Pandas.concat连接DataFrame和Series的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Pandas.concat连接DataFrame和Series文章都会有所收获,下面我们一起来看看吧。

    pandas.concat的基本用法()
    指定要连接的对象:objs
    连接方向的指定(垂直/水平):axis
    指定连接方法(外部连接/内部连接):join
    pandas.DataFrame的连接
    pandas.Series的连接
    pandas.DataFrame和pandas.Series的连接
    使用以下的pandas.DataFrame和pandas.Series为例。

    1. import pandas as pd
    2. df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
    3. 'B': ['B1', 'B2', 'B3'],
    4. 'C': ['C1', 'C2', 'C3']},
    5. index=['ONE', 'TWO', 'THREE'])
    6. print(df1)
    7. # A B C
    8. # ONE A1 B1 C1
    9. # TWO A2 B2 C2
    10. # THREE A3 B3 C3
    11. df2 = pd.DataFrame({'C': ['C2', 'C3', 'C4'],
    12. 'D': ['D2', 'D3', 'D4']},
    13. index=['TWO', 'THREE', 'FOUR'])
    14. print(df2)
    15. # C D
    16. # TWO C2 D2
    17. # THREE C3 D3
    18. # FOUR C4 D4
    19. s1 = pd.Series(['X1', 'X2', 'X3'], index=['ONE', 'TWO', 'THREE'], name='X')
    20. print(s1)
    21. # ONE X1
    22. # TWO X2
    23. # THREE X3
    24. # Name: X, dtype: object
    25. s2 = pd.Series(['Y2', 'Y3', 'Y4'], index=['TWO', 'THREE', 'FOUR'], name='Y')
    26. print(s2)
    27. # TWO Y2
    28. # THREE Y3
    29. # FOUR Y4
    30. # Name: Y, dtype: object


    pandas.concat的基本用法()
    指定要连接的对象:objs
    通过参数objs指定要连接的pandas.DataFrame和pandas.Series,指定类型为列表或元组。

    1. df_concat = pd.concat([df1, df2])
    2. print(df_concat)
    3. # A B C D
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN C2 D2
    8. # THREE NaN NaN C3 D3
    9. # FOUR NaN NaN C4 D4

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

    1. df_concat_multi = pd.concat([df1, df2, df1])
    2. print(df_concat_multi)
    3. # A B C D
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN C2 D2
    8. # THREE NaN NaN C3 D3
    9. # FOUR NaN NaN C4 D4
    10. # ONE A1 B1 C1 NaN
    11. # TWO A2 B2 C2 NaN
    12. # THREE A3 B3 C3 NaN

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

    连接方向的指定(垂直/水平):axis
    垂直或水平方向由axis参数指定。 如果axis = 0,则它们是垂直链接的。默认设置为axis = 0,因此可以省略不写。

    1. df_v = pd.concat([df1, df2], axis=0)
    2. print(df_v)
    3. # A B C D
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN C2 D2
    8. # THREE NaN NaN C3 D3
    9. # FOUR NaN NaN C4 D4

    axis = 1,水平方向上连接。

    1. df_h = pd.concat([df1, df2], axis=1)
    2. print(df_h)
    3. # A B C C D
    4. # ONE A1 B1 C1 NaN NaN
    5. # TWO A2 B2 C2 C2 D2
    6. # THREE A3 B3 C3 C3 D3
    7. # FOUR NaN NaN NaN C4 D4

    指定连接方法(外部连接/内部连接):join
    参数join:指定列名(或行名)的并集,或者仅将公共部分保留。

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

    join ='inner’是内部连接。仅保留具有相同列名(或行名)的列(或行)。

    1. df_v_out = pd.concat([df1, df2], join='outer')
    2. print(df_v_out)
    3. # A B C D
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN C2 D2
    8. # THREE NaN NaN C3 D3
    9. # FOUR NaN NaN C4 D4
    10. df_v_in = pd.concat([df1, df2], join='inner')
    11. print(df_v_in)
    12. # C
    13. # ONE C1
    14. # TWO C2
    15. # THREE C3
    16. # TWO C2
    17. # THREE C3
    18. # FOUR C4

    水平方向。

    1. df_h_out = pd.concat([df1, df2], axis=1, join='outer')
    2. print(df_h_out)
    3. # A B C C D
    4. # FOUR NaN NaN NaN C4 D4
    5. # ONE A1 B1 C1 NaN NaN
    6. # THREE A3 B3 C3 C3 D3
    7. # TWO A2 B2 C2 C2 D2
    8. df_h_in = pd.concat([df1, df2], axis=1, join='inner')
    9. print(df_h_in)
    10. # A B C C D
    11. # TWO A2 B2 C2 C2 D2
    12. # THREE A3 B3 C3 C3 D3

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

    pandas.DataFrame的连接
    将pandas.DataFrames连接在一起时,返回的也是pandas.DataFrame类型的对象。

    1. df_concat = pd.concat([df1, df2])
    2. print(df_concat)
    3. # A B C D
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN C2 D2
    8. # THREE NaN NaN C3 D3
    9. # FOUR NaN NaN C4 D4
    10. print(type(df_concat))
    11. # <class 'pandas.core.frame.DataFrame'>

    pandas.Series的连接
    如果是pandas.Series之间的连接,则垂直连接(默认值axis= 0)返回的也是pandas.Series类型的对象。

    1. s_v = pd.concat([s1, s2])
    2. print(s_v)
    3. # ONE X1
    4. # TWO X2
    5. # THREE X3
    6. # TWO Y2
    7. # THREE Y3
    8. # FOUR Y4
    9. # dtype: object
    10. print(type(s_v))
    11. # <class 'pandas.core.series.Series'>

    axis = 1时,水平方向连接,返回pandas.DataFrame类型的对象。

    1. s_h = pd.concat([s1, s2], axis=1)
    2. print(s_h)
    3. # X Y
    4. # FOUR NaN Y4
    5. # ONE X1 NaN
    6. # THREE X3 Y3
    7. # TWO X2 Y2
    8. print(type(s_h))
    9. # <class 'pandas.core.frame.DataFrame'>

    也可以使用参数join。

    1. s_h_in = pd.concat([s1, s2], axis=1, join='inner')
    2. print(s_h_in)
    3. # X Y
    4. # TWO X2 Y2
    5. # THREE X3 Y3

    pandas.DataFrame和pandas.Series的连接
    对于pandas.DataFrame和pandas.Series连接,水平连接(axis= 1)将pandas.Series添加为新列。列名称是pandas.Series的名称。

    1. df_s_h = pd.concat([df1, s2], axis=1)
    2. print(df_s_h)
    3. # A B C Y
    4. # FOUR NaN NaN NaN Y4
    5. # ONE A1 B1 C1 NaN
    6. # THREE A3 B3 C3 Y3
    7. # TWO A2 B2 C2 Y2

    也可以使用参数join。

    1. df_s_h_in = pd.concat([df1, s2], axis=1, join='inner')
    2. print(df_s_h_in)
    3. # A B C Y
    4. # TWO A2 B2 C2 Y2
    5. # THREE A3 B3 C3 Y3

    垂直连接(axis = 0)。

    1. df_s_v = pd.concat([df1, s2])
    2. print(df_s_v)
    3. # A B C 0
    4. # ONE A1 B1 C1 NaN
    5. # TWO A2 B2 C2 NaN
    6. # THREE A3 B3 C3 NaN
    7. # TWO NaN NaN NaN Y2
    8. # THREE NaN NaN NaN Y3
    9. # FOUR NaN NaN NaN Y4

    添加行,可以在.loc中指定新的行名称并分配值,或使用append()方法。

    1. df1.loc['FOUR'] = ['A4', 'B4', 'C4']
    2. print(df1)
    3. # A B C
    4. # ONE A1 B1 C1
    5. # TWO A2 B2 C2
    6. # THREE A3 B3 C3
    7. # FOUR A4 B4 C4
    8. s = pd.Series(['A5', 'B5', 'C5'], index=df1.columns, name='FIVE')
    9. print(s)
    10. # A A5
    11. # B B5
    12. # C C5
    13. # Name: FIVE, dtype: object
    14. df_append = df1.append(s)
    15. print(df_append)
    16. # A B C
    17. # ONE A1 B1 C1
    18. # TWO A2 B2 C2
    19. # THREE A3 B3 C3
    20. # FOUR A4 B4 C4
    21. # FIVE A5 B5 C5

    以上就是怎么使用Pandas.concat连接DataFrame和Series的详细内容,更多关于怎么使用Pandas.concat连接DataFrame和Series的资料请关注九品源码其它相关文章!