关于按内容拆分EXCEL表格

关于Excel表格拆分,诚邀解答:
一张十万条以上数据的表格,A、b、c列内有相同数据,要求根据这三列内相同数据拆分为多个表格文件,并将这几列的首个单元格内容及c列首个单元格内容的后四个字符合并为文件名,且拆分后的表格保留源表格式(不能出现科学计数法- -)。
平台:win系统,只有VBA、Python
另:在下初学,有劳兄台解答时注明使用平台及需要安装哪些环境,代码加注释,感激不尽。
以如下图表格为例,要求以职务、性别、出生日期三列内相同的内容分别拆分为新表格,且新表格文件名为“性别&职务&出生日期(后四位)”并保留源格式。

img

dirname=r'C:\Users\Administrator\Desktop'
import pandas as pd
import os

df = pd.read_csv(dirname + "/aa.csv", encoding = 'gbk')
print(df)

res = df.groupby(['职务', '性别', '出生日期'])
for i,d in res:
    filename = i[0] + '_' + i[1] + '_' +str(i[2])[-4:] + r'.csv'
    d.to_csv(os.path.join(dirname, filename), index = False)

img

以上为csv文本gbk格式,以下为excel格式:

dirname=r'C:\Users\Administrator\Desktop'
import pandas as pd
import os

df = pd.read_excel(dirname + "/aa.xlsx")
print(df)

res = df.groupby(['职务', '性别', '出生日期'])
for i,d in res:
    filename = i[0] + '_' + i[1] + '_' +str(i[2])[-4:] + r'.xlsx'
    d.to_csv(os.path.join(dirname, filename), index = False)

img

我猜你是想对数据分组

给个解决方案,逻辑上应该没啥问题,就看在数据格式上有没有问题了,先把要筛选的3列取出来组合成字符串放到一个列表中,用set去重,就得到了分割表格的依据,遍历去重后的列表,从原始数据中取职务、性别、生日相同的数据存同目录下

import pandas as pd
df = pd.read_excel('test.xlsx')
lst = []
for i in df.index:
    lst.append(df.at[i,'职务']+','+df.at[i,'性别']+','+str(df.at[i,'出生日期']))
types = list(set(lst))
for type in types:
    [pos, sex, birth] = type.split(',')
    fileName = f'{sex}&{pos}&{birth[-4:]}.xlsx'
    data = df[((df['职务']==pos) & (df['性别']==sex) & (df['出生日期']==int(birth)))]
    data.to_excel(fileName,index=None)

这是我的测试数据和运行结果,你运行没结果说明数据格式不一样,你确定一下你的出生日期那一列表格数据是什么格式

img


img


img

img