本文目录一览:
python--pandas合并与连接
append 方法根据行在原数据框添加新的数据框。
如果想要合并后的数据框索引重写排序,可以设置参数 ignore_index=True 。
concat 函数是panda自带的,可以按行或按列合并多个pandas数据框。
按行合并多个数据框,需要注意的是 objs参数接受一个可迭代对象 。concat函数默认按行合并。
设置 ignore_index=True ,使合并后的数据框索引重新排序。
按行合并时,concat对所有的列进行全连接(参数 join='outer' ),没有的列会填充为NaN。
设置参数 join='inner' ,可以只保留共有的列。
设置参数 axis=1 或 axis='columns' ,可以按列合并多个数据框。
merge 方法根据列或索引连接数据框。
当两个数据框只有一个相同列时, merge 方法会自动根据相同列进行内连接, on 参数可以省略。
设置参数 how=['left','right','outer','inner','cross'] ,可以完成不同类型的连接。
当两个数据框没有相同列时,需要设置 left_on 和 right_on 参数,表示按这两列进行连接。
如果需要根据数据框的索引进行连接,需要根据需求设置参数 left_index=True 或者 right_index=True 。
设置 suffixes ,可以给相同的列名添加后缀。默认后缀是 _x , _y 。
join 方法与 merge 方法作用相同,基本上 merge 方法已经可以完成所有的连接操作。
join 方法对按索引连接更方便而已。
当连接的两个数据框中没有相同列时,可以直接按索引进行左连接。
同样,可以设置 how 参数,控制连接的行为。
当数据框中有相同列时,需要设置后缀。
python合并多个EXCEL表
在日常工作中经常回用到数据分析与统计工作,而在实施数据分析之前,最为最要的就是数据的搜集、整理工作。这里介绍一下多个相同格式的excel合并的处理。如果在excel文件表比较少时,手工合并还可以应付,当几十个几百个甚至更多的表时,手工合并效率会非常低,于是让计算机自动合并处理,帮助我们完成工作就显得非常有必要。
比如,在“2019年集团大学生招聘”下有两个表格,想要实现的是将这两个表格数据合并。
各个表中的数据格式如下图:
结果:
有时候表格存放在文件夹下,现在需要将不同文件夹下的表格合并,此时需要对程序进行简单的修改。
文件目录结构如下:
在此之前需要先了解一下os模块中的walk方法:
结果:
注意:os.walk()方法,它可以查询到目录下不同文件夹中的文件。其中,x代表的是文件路径,y代表的是目录下的文件夹,z代表的是目录下的文件。
结果:
最后,需要注意,以上只是一个简单的程序,对于数据量不是很大的场景,可以放心使用。但当数据量非常大时,程序还需要进一步优化,因为程序是将所有的数据保存在一个列表中,最后再一次性写入excel表中,这里需要考虑excel版本是否支持大数据量的写入,另外,也要考虑程序资源消耗的问题,内存可能不足。
针对不同场景的Python合并多个Excel方法
大家好,我是辰哥~
在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便。最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢~~~
辰哥目前想到的仅是辰哥遇到的这三种情况( 如果还有很多其他情况的,欢迎在下方留言 ,因为辰哥日常非经常涉及多种excel处理的内容,所以想不到其他情况)
这里辰哥先新建三个excel文件:11.xlsx;12.xlsx;13.xlsx;并往里填充数据,数据如下:
需求:将这三个excel文件合并到一个excel中。
这里需要用到两个库: xlrd读取excel; xlwt写入到合并的excel;
定义合并哪些excel文件,以及合并后的excel
最后合并到:**合并1_辰哥.xlsx **中,其结果如下:
新建三个excel文件:21.xlsx;22.xlsx;23.xlsx;并往里填充数据
将这三个excel文件拼接带一个excel中(从左往右)
最后合并到:**合并2_辰哥.xlsx **中,其结果如下:
新建一个excel文件:31.xlsx;并新增 sheet1、sheet2、sheet3 ,往里填充数据
将同一个excel文件中的这三个sheet并到一个sheet中。
最后合并到: 合并3_辰哥.xlsx 中,其结果如下:
目前想到的仅是辰哥遇到的这三种情况( 如果还有很多其他情况的,欢迎在下方留言 ,因为辰哥日常并非经常涉及多种excel处理的内容,所以想不到其他情况)
Python如何合并多个装饰器?教你几个小技巧
Python如何合并多个装饰器?教你几个小技巧
django程序,需要写很多api,每个函数都需要几个装饰器 ,例如
复制代码 代码如下:
@csrf_exempt
@require_POST
def foo(request):
pass
既然那么多个方法都需要写2个装饰器,或者多个,有啥办法把多个合并成一行呢?
上面的函数执行过程应该是
复制代码 代码如下:
csrf_exempt(require_POST(foo))
修改成
复制代码 代码如下:
def compose(*funs):
def deco(f):
for fun in reversed(funs):
f = fun(f)
return f
return deco
函数改写成
复制代码 代码如下:
@compose(csrf_exempt, require_POST)
def foo(request):
pass
参考:
Can I combine two decorators into a single one in Python
;