python - 在日期时间段内分配累积的第 N 天。[即这一行属于第134天]
问题描述
假设我有一个示例系列如下:
TimeStamp
0 1/1/2019
1 1/1/2019
. .
. .
. .
500 31/1/2019
501 1/2/2019
502 2/2/2019
503 2/2/2019
我将如何实现以下目标:
TimeStamp Nth Day
0 1/1/2019 1
1 1/1/2019 1
. . .
. . .
. . .
500 31/1/2019 31
501 1/2/2019 32
502 2/2/2019 33
503 2/2/2019 33
我们不仅要找出两个时间戳之间经过的天数,还要将第 N 天分配给相关行。
我写了一个 For 循环来检查 TimeStamp.dt.day 上是否有这样的开关:上次迭代超过 31 次,而这次超过 1 次 [从 1 月 31 日到 2 月 1 日],所以这意味着这是一个新的一天。如果是新的一天,则将 +1nth 天附加到由于此循环而创建的新系列。
它有效,但是,我有 50 万个条目,这需要很长时间(15-20 分钟)。有没有一种有效的方法来做到这一点?
编辑:循环。原谅冗长的旧/新变量。
daySeries = df['TimeStamp'].dt.day
dayList = pd.Series([1])
for eachday in daySeries:
new = eachday
if len(dayList) == 1:
old = new
lastVal = dayList[-1:].values[0]
if new == old:
dayList = dayList.append(pd.Series([lastVal]), ignore_index=True)
else:
dayList= dayList.append(pd.Series([lastVal+1]), ignore_index=True)
old = eachday
df['Nth Day'] = dayList
解决方案
推荐阅读
- regex - 空字符串上的 Grep Perl 非贪婪范围正则表达式匹配问题
- python - 我如何将这个数据框中的可用兆瓦数量逐小时与价格范围相加到不同的列中?
- c - c实现的二叉树
- c++ - 为什么 std::vector::at 不是 const 函数?
- reactjs - 所有 Bootstrap 行都在一行中
- python - While 循环除 ValueError 外,未按预期工作
- ios - 如何考虑 SnapKit 中导航栏的高度?
- javascript - Reactjs应用程序中的路线更改时如何将浏览器缩放级别重置为“100%”
- winapi - WinAPI LB_GETCURSEL 总是返回 1
- oracle - 为 shipping_status_af_update 创建 Oracle TRIGGERS