python循环控制间隔。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python循环控制间隔。相关的知识,希望对你有一定的参考价值。
如何使一个循环里同时进行两个计数。
使一个计数每隔1秒进行一次第二个每隔2秒计数一次。
比如每隔1秒打印一次 '百度。'每隔2秒打印一次 '谷歌。'
在同一个循环里,运行两秒打印两次 '百度'和一次'谷歌'
要如何实现。
count%n==0就是每n个最小间隔满足一次 参考技术A # -*- coding: cp936 -*-
import time
a=1
while 1:
if a==2:
print "百度"
print "谷歌\\n\\n\\n\\n"
a=1
time.sleep(1)
if a!=2:
print "百度"
a+=1
time.sleep(1)本回答被提问者采纳
在 Python 中的循环内创建列
【中文标题】在 Python 中的循环内创建列【英文标题】:Creating Columns Inside Loops In Python 【发布时间】:2021-07-12 13:04:40 【问题描述】:我正在运行以下命令,在循环中创建名为 NEW_DATE
的新列。
我想为每一行,循环计算一个间隔,然后将该间隔与DATE
相加,结果存储在NEW_DATE
中。
数据框如下所示:
DATE INFO
0 2021-01-22 0.375
1 2020-12-04 0.125
2 2021-01-01 0.500
3 2020-12-24 0.375
4 2020-12-10 0.125
代码是这样的:
df['DATE'] = pd.to_datetime(df['DATE'], format='%Y%m%d')
for index, row in df.iterrows():
c1 = df['INFO'][index]
print(c1)
c3 = datetime.timedelta((1/c1)*5)
print(c3)
c2 = df['DATE'][index]
print(c2)
df['NEW_DATE'][index] = c2 + c3
print(df['NEW_DATE'][index], '\n')
目前我收到以下错误:
KeyError: 'NEW_DATE'
如果我删除 write df['NEW_DATE'][index] = c2 + c3
,代码会运行,但存储在 NEW_DATE
中的值不正确,因为它们与打印的不同。
我该如何做我上面描述的事情?我走对了吗?
【问题讨论】:
看起来您需要在尝试为每一行设置值之前将NEW_DATE
列添加到您的数据框中。您可以搜索“pandas add column to dataframe”以了解几种方法。
【参考方案1】:
如果您想坚持该解决方案,请先在 for 循环之前创建空列,例如:
df['NEW_DATE'] = np.nan
# for loop ...
要分配值,您可能需要使用 loc
df.loc[index, 'NEW_DATE'] = c2 + c3
一般来说itterrows()
很慢,一般这类问题应该用向量化的方法解决:
df['NEW_DATE'] = df['DATE'] + pd.to_timedelta((1/df['INFO'])*5, unit='D')
【讨论】:
我了解矢量化方法,但是当我运行这两种方法时,NEW_DATE
列值在 itterrows()
的方法上是正确的,而在矢量化方法上是错误的。不知道为什么会这样。就像 c3 必须以天为单位(而不是日期)一样,不确定在矢量化中是否对 c2 的天数求和。你知道如何在矢量化中做到这一点吗?
datetime.timedelta
接收第一个参数为天,pd.to_timedelta
默认使用纳秒。使用参数 unit
检查编辑【参考方案2】:
您收到此错误,因为该列不存在。你需要在循环之前创建它
df['NEW_DATE'] = np.nan
【讨论】:
以上是关于python循环控制间隔。的主要内容,如果未能解决你的问题,请参考以下文章