写在前面
- 通常们需要进行多表合并操作,合并后有需要把处理后的表存储回去。
- merge 通常按指定行进行合并,可以理解为Exel中的vlookup函数。
- concat 通常按列名或行名合并,通过axis参数指定,可以用于新增多行或者多列(新增单行单列不需要这样麻烦,但新增多行多列建议使用concat)
1. merge
1.1参数详解
- how 默认为inner,可设为inner/outer/left/right
- on 根据某个字段进⾏连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使⽤left_on和right_on来设置)
- left_on 左连接,以DataFrame1中⽤作连接键的列
- right_on 右连接,以DataFrame2中⽤作连接键的列
- left_index 将DataFrame1⾏索引⽤作连接键
- right_index 将DataFrame2⾏索引⽤作连接键
- sort 根据连接键对合并后的数据进⾏排列,默认为True
- suffixes 对两个数据集中出现的重复列,新数据集中加上
1.2 参考链接
https://blog.csdn.net/bqw18744018044/article/details/79944544
2. concat (新增行列比较好用)
2.1 参数详解
- objs:要进行拼接的pandas对象,可用中括号[]将两个或多个对象括起来
- axis:指定对象按照那个轴进行拼接,默认为0(纵向拼接),1为横向横向拼接
- join:拼接的方式,inner为交集,outer为并集
- join_axes:index的列表,仅在横向合并时使用,指明要将数据合并入哪个原表的index。
- ignore_index:默认为False,如果设置为true,则无视表原来的轴标签,直接合并,合并后生成新的轴标签。
- keys:表标识的列表,用来区分合并的表来自哪里。
2.2 参考链接
https://www.jb51.net/article/206970.htm
https://blog.csdn.net/nilingxi/article/details/123841413
2.3 实际场景
- 工作时 用来更新数据, 代码只给了片段,所以给了较多注释
- 有需要具体案例的私信
# 新加的多列, 先转化为同列名名的 dataframe对象
# increase_row 是上文代码构建的二维数组
new_rows = pd.DataFrame(increase_row, columns=df2.columns)
# 默认安列名合并
# [df2, new_rows] 两个合并的dataframe对象 一定要这样放
new_df = pd.concat([df2, new_rows], axis=0, ignore_index=True)
# 存储会原表 dict_config["update_file"] 这里自己写成配置文件了,
new_df.to_excel(dict_config["update_file"], sheet_name='sheet1',
index=False, header=True)
3. 存储单行单列 修改单个值
- 这部分相对比较简单,以下参考链接已经比较完善,就不做额外补充
https://www.jb51.net/article/163904.htm
4.合并两列数据多种方法
https://www.delftstack.com/zh/howto/python-pandas/how-to-combine-two-columns-of-text-in-dataframe-in-pandas/