我有一个像
ID | Half Hour Bucket | clock in time | clock out time | Rate
232 | 4/1/19 8:00 PM | 4/1/19 7:12 PM | 4/1/19 10:45 PM | 0.54
342 | 4/1/19 8:30 PM | 4/1/19 7:12 PM | 4/1/19 7:22 PM | 0.23
232 | 4/1/19 7:00 PM | 4/1/19 7:12 PM | 4/1/19 10:45 PM | 0.54
我希望我的输出是
ID | Half Hour Bucket | clock in time | clock out time | Rate | Mins
232 | 4/1/19 8:00 PM | 4/1/19 7:12 PM | 4/1/19 10:45 PM | 0.54 |
342 | 4/1/19 8:30 PM | 4/1/19 7:12 PM | 4/1/19 7:22 PM | 0.23 |
232 | 4/1/19 7:00 PM | 4/1/19 7:12 PM | 4/1/19 10:45 PM | 0.54 |
其中分钟表示下班打卡时间和上班打卡时间之间的差。你知道吗
但是我只能在它对应的同一行中包含半小时bucket的分钟值。你知道吗
例如,对于ID342,它将是10分钟,10分钟将在那一排。你知道吗
但对于ID232,从打卡到打卡的时间跨度为3个小时。我只想要第一排8到830的30分钟,第三排18分钟。对于第一行中不存在的半小时bucket(如830-9或9-930)中的分钟数,我想在同一个df中创建一个新行,其中包含除半小时bucket和原始行中不存在的分钟数字段以外的所有内容的nan。你知道吗
从8点到830点的30分钟将停留在第一排,但我希望所有半小时桶的5个新行不是4/1/19 8:00 PM作为新行,只有半小时桶和从该行结转的费率。这可能吗?你知道吗
我感谢任何人抽出时间!你知道吗
意识到我的第一个答案可能不是你想要的。这个版本,希望是。这比我最初想象的要复杂得多!你知道吗
创建数据
首先,根据问题中提供的数据框架,创建一个要使用的数据框架。结果的格式不太一样,但很容易修复,所以我把它留在这里。你知道吗
输出:
解决方案
接下来,定义一个简单的函数,返回一个长度等于
min
列中30分钟间隔数的列表。你知道吗并将其应用于数据帧:
接下来,为“samples”列中的每个列表项创建一个新行(使用Roman Pekarhere提供的答案):
将
s
连接到数据帧并清理额外的列:这给了我们:
快到了!你知道吗
重置索引:
将重复行设置为
NaN
:它给出:
最后,向前填充
half_hour_bucket
和rate
列。你知道吗最终输出:
相关问题 更多 >
编程相关推荐