我需要在excel中创建一个“预格式化”工作表,如下:
Vacation Permit Personnel No Name 01.01 02.01 ..... ..... 31.12
=SUM() =SUM() 11111 Jon Snow
=SUM() =SUM() 22222 Daenerys Targaryen
... ... ... ...
... ... ... ...
我手动尝试并工作
df = {'Vacation': ['=SUM(E2:Z2)', '=SUM(E2:Z2)'],
'Permit': ['=SUM(E2:Z2)', '=SUM(E2:Z2)'],
'Personnel': ['11111', '22222'],
'Name': ['Jon Snow', ' Daenerys Targaryen'],
'01.01': ['', ''],
'02.01': ['', ''],
'31.12': ['', '']
}
但是我需要使用现有的“个人编号”和“姓名”列表自动创建特定年份的所有日期列,然后为每行插入与姓名列表相同的列数。 一年中的每一天第一次都是空的,以后将由其他过程填充。 此过程仅在第一次创建基本工作表。
我希望我能自我解释。
关于, 马可
编辑:我已经找到了解决方案
使用“年份”创建字典并添加到di_daysOfYears
字典
start_dt = date(2020, 1, 2)
end_dt = date(2020, 12, 31)
di_daysOfYears = {'01.01': None}
for dt in daterange(start_dt, end_dt):
di_daysOfYears[cal] = None
从另一个Excel文件获取2列的列表
df_empList = pd.read_excel(filename, index_col=None, sheet_name='L5', usecols = "A, B")
将df_empList转换为字典
di_empList = df_empList.to_dict('list')
使用2列公式创建字典
di_count = {'Vacation Count': '=SUM()',
'Permit Count': '=SUM()'
}
连接所有字典并转换成数据框
di_count.update(df_empList)
di_count.update(di_daysOfYears)
df_empList = pd.DataFrame(di_count)
print(df_empList)
我不知道是否存在更快速的过程。 这行得通。