繁体   English   中英

我想找到一个现有的 col/row 并编辑它

[英]I want to find an existing col/row and edit it

所以我正在为一个项目开发一个RFID系统。 我正在运行 python3 的 Raspberry PI 上编写它。

我有这些 RFID 标签,你可以扫描它,它会记录它被标记的信息。 这总结了 excel 中的这些列:

“worker_name”:“”,“日期”:“”,“check_in_time”:“”,“check_out_time”:“”,“hours_worked”:“”


我可以在签入时填写所有这些值,显然 check_out_time 除外,因为这应该在第二次扫描标签时填写。

所以我的问题是我不知道如何编辑列,当扫描标签以进行签出时,签出时间也记录在原始列中,而无需创建新列。

我们所说的代码如下:

import pandas as pd
from datetime import datetime
from time import sleep


counter = 1

df = pd.DataFrame(
    {
        "worker": "",
        "date": "",
        "check_in_time": "",
        "check_out_time": "",
        "hours_worked": "",
    },
    index=[counter],
)

while True:

    worker = input("Navn \n")
    time_now = datetime.now()

    date = time_now.strftime("%m/%d/%Y")
    time = time_now.strftime("%H:%M")
    month = time_now.strftime("%m")

    new_check_in = [worker, date, time, "", "dummy_value"]

    df.loc[counter] = new_check_in

    df.reset_index(drop=True)
    df.to_excel("output.xlsx", index=False)

    counter += 1

Output如下:

     worker        date    check_in_time check_out_time  hours_worked
1  Homer Simpson  12/09/2021   02:14                     dummy_value
2  Marge Simpson  12/09/2021   02:14                     dummy_value
3   Bart Simpson  12/09/2021   02:14                     dummy_value
4  Peter Griffin  12/09/2021   02:14                     dummy_value

这是一个例子的证明,因为我还没有实现你扫描标签的部分,但概念应该保持不变。

因此,当索引 1 的工人完成他的工作日时,他会使用他的标签结账,并且存储他的信息的 dataframe 列应该更新结账时间。

谢谢大家,亲切的问候!

假设所有工作人员都有不同的名称,您可以尝试检查其各自列中的worker / date值,如果出现,则填写check_out_time

您的代码的后一部分可能如下所示,例如:

while True:

    worker = input("Navn \n")
    time_now = datetime.now()

    date = time_now.strftime("%m/%d/%Y")
    time = time_now.strftime("%H:%M")

    if ((df['worker'] == worker) & (df['date'] == date)).any():
        idx = df.iloc[(df['worker'] == worker) & (df['date'] == date)]
        df.at[idx, check_out_time] = time
        df.at[idx, hours_worked] = time - df.at[idx, check_in_time]

    new_check_in = [worker, date, time, "", np.nan]

    df.loc[counter] = new_check_in

    df.reset_index(drop=True)
    df.to_excel("output.xlsx", index=False)

    counter += 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM