用熊猫创建一个“矩阵”

时间:2020-06-15 08:05:00

标签: pandas

我需要在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)

我不知道是否存在更快速的过程。 这行得通。

0 个答案:

没有答案