计算列中的时差并将其保存为具有多个电子表格的许多excel文件,PYTHON

hou

我需要计算目录中包含多个电子表格的n个excel文件的时差。首先,我根据日期将数据框拆分为电子表格,然后检查该列Door Name中的两个连续行是否不同,最后,如果数据框的长度是偶数,则我计算了时间差。

第1步:

在此处输入图片说明

第2步:

在此处输入图片说明

我的代码:

import pandas as pd
import glob
import datetime
from tkinter import filedialog

pathEmp=Employees + "/*.xlsx" # Select directory using tkinter
for femp in glob.glob(pathEmp):
    print('******\n')
    name_file=os.path.split(femp)[-1]
    print('Employee ',name_file)

    xl = pd.ExcelFile(femp)
    print('Sheet name: ',xl.sheet_names)
    for sh in xl.sheet_names:
        df = xl.parse(sh)
        print('Processing: [{}] ...'.format(sh))
        print('length : ',len(df))
        df['Time'] = pd.to_datetime(df['Time'])
        df['value'] = (df[['Door Name']] != df[['Door Name']].shift()).any(axis=1)
        print('My df\n',df)
        for i in range (len(df)):
            if (len(df)) %2 == 0:
                if (df.value.nunique() == 1):
                    df['Working hours'] = df['Time'].iloc[1::2].to_numpy() - df['Time'].iloc[::2]
                    Total = df['Working hours'].sum()
                    Total = '%02d:%02d:%02d' % (Total.days*24 + Total.seconds // 3600, (Total.seconds % 3600) // 60, Total.seconds // 60)
        print('Working hours', Total)

预期产量:

在此处输入图片说明

如何Working hours在目录中每个Excel文件的每个电子表格中保存该列

Danila Ganchar

这是一个例子。

# your input
df = pd.DataFrame({
    'DoorName': ('RDC_IN-1', 'RDC_OUT-1', 'RDC_IN-1', 'RDC_OUT-1', 'RDC_IN-1', 'RDC_OUT-1',
                 'RDC_IN-1', 'RDC_OUT-1', 'RDC_IN-1', 'RDC_OUT-1', 'RDC_IN-1'),
    'Time': (datetime(2019, 9, 30, 17, 49, 6), datetime(2019, 9, 30, 17, 45, 51),
             datetime(2019, 9, 30, 17, 45, 28), datetime(2019, 9, 30, 16, 37, 53),
             datetime(2019, 9, 30, 15, 59, 53), datetime(2019, 9, 30, 9, 15, 0),
             datetime(2019, 9, 27, 18, 25, 39), datetime(2019, 9, 27, 18, 27, 9),
             datetime(2019, 9, 27, 12, 10, 33),
             datetime(2019, 9, 27, 8, 42, 50), datetime(2019, 9, 27, 18, 24, 34)),
})

df['name'] = 'Arya Stark'
# generate date column from Time column
df['date'] = df['Time'].dt.strftime('%Y-%m-%d')

# open file for writing
with pd.ExcelWriter('output.xlsx') as writer:
    # for each unique date
    for u_date in df['date'].unique():  # type: str
        # sub DataFrame from main DataFrame by date
        df_by_date = df[df['date'] == u_date]
        # date column is no longer needed
        df_by_date = df_by_date.drop(columns=['date'])
        # DoorName Cumulative sum + group by name (Arya Stark)
        s = df_by_date['DoorName'].eq('RDC_IN-1').iloc[::].cumsum()
        con = df_by_date.name.groupby(s).transform('nunique') == 1
        # diff in seconds between RDC_IN and RDC_OUT for each couple
        sec_df = df_by_date[con].groupby(s).agg({
            'Time': lambda x: (x.iloc[0] - x.iloc[-1]).seconds
        })

        df_by_date = df_by_date.reset_index()
        df_by_date = df_by_date.drop(columns=['index'])
        df_by_date['WorkingHours'] = ''
        # sum all seconds and convert to timedelta
        working_hours = str(timedelta(seconds=int(sec_df['Time'].sum())))
        # insert only in first row of sheet(as in your example)
        df_by_date['WorkingHours'].loc[0] = working_hours
        # append sheet by unique date
        df_by_date.to_excel(writer, sheet_name=u_date, index=False)

您会看到预期的文件。查看评论-如果您需要一些更改,我确定可以自定义它。希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Google电子表格导出为PDF,然后将PDF保存为具有特定名称的驱动器

来自分类Dev

比较excel中两个不同电子表格的列并将结果放在第三个电子表格中

来自分类Dev

使用gspread更新具有相同数据的多个电子表格文件

来自分类Dev

Excel电子表格读取特定列python

来自分类Dev

是否可以基于Excel 2007中的列将电子表格拆分为多个文件?

来自分类Dev

如何计算Google电子表格/ Excel中两列数字之间的总差?

来自分类Dev

如何在脚本中调整自定义尺寸边距和纸张尺寸以将谷歌电子表格保存为 PDF?

来自分类Dev

按列数对Excel电子表格中的所有行进行排序

来自分类Dev

如何将Excel电子表格另存为以分号分隔的值文件?

来自分类Dev

将电子表格另存为给定文件夹中的csv文件

来自分类Dev

Python,在 3 列中组合独特的内容(Excel 电子表格)

来自分类Dev

Python脚本没有将整个行放在Excel电子表格中

来自分类Dev

Python:将数据爬到Excel电子表格中时没有回溯

来自分类Dev

如何从包含多个表格的 Excel 电子表格中根据其标题选择表格?

来自分类Dev

创建多个Excel电子表格

来自分类Dev

从Excel电子表格中读取,并使用XLSX中的数据重命名多个文件夹

来自分类Dev

计算Google文档电子表格列中具有任何值(字符串或数字)的单元格数

来自分类Dev

计算Google文档电子表格列中具有任何值(字符串或数字)的单元格数

来自分类Dev

是否可以在内存中创建电子表格并将其提供给链接而不将其保存在服务器端?

来自分类Dev

是否可以在SSRS报表中循环浏览数据集并将每个数据集另存为Excel电子表格?

来自分类Dev

具有Excel功能的HTML Table to Excel电子表格

来自分类Dev

在Excel中,如果我具有复选框类型的电子表格,如何在特定列中添加值?

来自分类Dev

如何计算LibreOffice电子表格中的错误?

来自分类Dev

Excel无法打开Gembox电子表格文件

来自分类Dev

如何自动打印Excel电子表格文件?

来自分类Dev

SAS proc导入具有多个电子表格并附加的.xls

来自分类Dev

如何使用pandas“取消透视”具有多个嵌套维度的电子表格?

来自分类Dev

从一个Excel文件创建多个电子表格

来自分类Dev

Google 电子表格中的多个项目与多个脚本文件

Related 相关文章

  1. 1

    将Google电子表格导出为PDF,然后将PDF保存为具有特定名称的驱动器

  2. 2

    比较excel中两个不同电子表格的列并将结果放在第三个电子表格中

  3. 3

    使用gspread更新具有相同数据的多个电子表格文件

  4. 4

    Excel电子表格读取特定列python

  5. 5

    是否可以基于Excel 2007中的列将电子表格拆分为多个文件?

  6. 6

    如何计算Google电子表格/ Excel中两列数字之间的总差?

  7. 7

    如何在脚本中调整自定义尺寸边距和纸张尺寸以将谷歌电子表格保存为 PDF?

  8. 8

    按列数对Excel电子表格中的所有行进行排序

  9. 9

    如何将Excel电子表格另存为以分号分隔的值文件?

  10. 10

    将电子表格另存为给定文件夹中的csv文件

  11. 11

    Python,在 3 列中组合独特的内容(Excel 电子表格)

  12. 12

    Python脚本没有将整个行放在Excel电子表格中

  13. 13

    Python:将数据爬到Excel电子表格中时没有回溯

  14. 14

    如何从包含多个表格的 Excel 电子表格中根据其标题选择表格?

  15. 15

    创建多个Excel电子表格

  16. 16

    从Excel电子表格中读取,并使用XLSX中的数据重命名多个文件夹

  17. 17

    计算Google文档电子表格列中具有任何值(字符串或数字)的单元格数

  18. 18

    计算Google文档电子表格列中具有任何值(字符串或数字)的单元格数

  19. 19

    是否可以在内存中创建电子表格并将其提供给链接而不将其保存在服务器端?

  20. 20

    是否可以在SSRS报表中循环浏览数据集并将每个数据集另存为Excel电子表格?

  21. 21

    具有Excel功能的HTML Table to Excel电子表格

  22. 22

    在Excel中,如果我具有复选框类型的电子表格,如何在特定列中添加值?

  23. 23

    如何计算LibreOffice电子表格中的错误?

  24. 24

    Excel无法打开Gembox电子表格文件

  25. 25

    如何自动打印Excel电子表格文件?

  26. 26

    SAS proc导入具有多个电子表格并附加的.xls

  27. 27

    如何使用pandas“取消透视”具有多个嵌套维度的电子表格?

  28. 28

    从一个Excel文件创建多个电子表格

  29. 29

    Google 电子表格中的多个项目与多个脚本文件

热门标签

归档