excel功能非常强大,但是那也是对于会用的人来说才有意义。对于程序员来说,excel就是异端,获取数据后,自己想怎么搞就怎么搞那感觉才舒服。
听说想根据某一列数据将excel拆分成多个文件的需求。
作为一个传统C程序员,第一想到的就是按列建关键字,然后....
直到我发现了pandas这东西,居然只要
import pandas as pd
def read_excel():
xlsx_file = pd.ExcelFile(r'D:\pyexcel\2.xlsx')
sheet1 = xlsx_file.parse('Sheet1')
colname = input('输入待分列名:')
df = pd.DataFrame(sheet1)
grouped = df.groupby(df['%s']%colname)
for name, group in grouped:
group.to_excel(r'D:\pyexcel\%s.xlsx'%name, index=False)
if __name__ =='__main__':
read_excel()
好吧在python的世界中 我才是异端
但是要打包给别人用,pyinstaller教育了我,偷懒是要付出代价的,上面几行代码打包成的exe有200M。上万查了半天原来是pandas这库太大了,所以,异端就异端吧,我改。
gp = input('输入分组列名:')
for i in range(0, sheet.ncols):
cell_value = sheet.cell_value(0, i)
if cell_value == gp:
apart_col = i
break
for i in range(1, sheet.nrows):
apart = sheet.cell(i, apart_col).value
if apart not in divied:
tmpapart = []
tmpapart.append(i)
divied.setdefault(apart, tmpapart)
else:
tmpapart = divied[apart]
tmpapart.append(i)
divied[apart] = tmpapart
实现了pandas中的groupby,ok 收工,打包只有9M。虽然我还是觉得大,但是好多了。
完整代码作者后续上传github。
说下总体感受,python就是业余拿来玩耍的,但是可以发现它确实太方便了,尤其对于我这种C程序员来说,丰富的库,那简直就是福音啊,未来不定期更新其他的使用情况
领取专属 10元无门槛券
私享最新 技术干货