pandas的拼接操作

pandas的拼接操作

1.使用pd.concat()级联

①简单级联:df1和df2的行列相同

pd.concat((df1,df2),axis=0) 默认是垂直级联;如果axis=1的话就是水平级联
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ignore_index=False 默认不改变原来的索引,True的话就会删除原索引,由递增的0,1,2,3代替。
keys=[‘df1’,‘df2’] 使用多层索引:
在这里插入图片描述

②不匹配级联

不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致
在这里插入图片描述

1)外连接,没有的补NaN(默认)
2)内连接,只连接匹配的项
3)连接指定轴join_axes
在这里插入图片描述

③使用append()函数添加

由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加。默认垂直添加

2.使用pd.merge()合并

merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并(要求合并的两个DataFrame 必须有一行或者一列有相同的值)
使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
注意每一列元素的顺序不要求一致
在这里插入图片描述

1)一对一合并
2)多对一合并
3)多对多合并

4)key的规范化

  • 使用on=显式指定哪一列为key,当有多个key相同时使用 pd.merge(df1,df2,on=‘name’)
  • 使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不相等时使用 pd.merge(df1,df2,left_on=‘name’,right_on=‘姓名’)
  • 当左边的列和右边的index相同的时候,使用right_index=True pd.merge(df1,df2,left_on=‘age’,right_index=True)

5)内合并与外合并
-内合并:只保留两者都有的key(默认)how=‘inner’
-外合并:how=‘outer’,没有的值补NaN

  • 左合并、右合并:how=‘left’,how=‘right’(外合并与mysql中的表格的连接方式一样,以一个表为标准,没有的补NaN)

6)列冲突的解决
当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
可以使用suffixes=自己指定后缀
例如:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用pandas库来进行数据拼接。数据拼接是指对行或列名相同的元素进行拼接,通过拼接可以将多个数据框或多维数组组装成一个整体。Pandas提供了多种方法来实现数据拼接,比如concat、merge、join等。 要使用pandas进行数据拼接,首先需要导入pandas库。然后可以使用concat方法来拼接行或列。拼接行时,即行变多,而列保持不变;拼接列时,即列变多,而行保持不变。可以通过指定axis参数来控制是行拼接还是列拼接。当axis=0时,表示行拼接;当axis=1时,表示列拼接。 下面是使用pandas进行数据拼接的示例代码: ```python import pandas as pd # 行拼接 df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]}) result1 = pd.concat([df1, df2], axis=0) # 列拼接 df3 = pd.DataFrame({'C': [13, 14, 15], 'D': [16, 17, 18]}) result2 = pd.concat([df1, df3], axis=1) print(result1) print(result2) ``` 运行上述代码,可以得到以下结果: ``` A B 0 1 4 1 2 5 2 3 6 0 7 10 1 8 11 2 9 12 A B C D 0 1 4 13 16 1 2 5 14 17 2 3 6 15 18 ``` 以上是基于pandas的数据拼接操作,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python数据分析pandas之数据拼接与连接](https://blog.csdn.net/shenliang1985/article/details/118727212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python+pandas+时间、日期以及时间序列处理方法](https://download.csdn.net/download/weixin_38708361/12867753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值