如何在检测到一个“0”后打印 'end' 的一个值并恢复到检测“1”
How do i print one value of 'end' after detecting one '0' and revert back into detecting '1's
我目前的代码
所以现在基本上这是我的代码,我只希望在我的 excel sheet 中检测到值 0 时打印一个 'end'。我想要的主要输出是当值为“1”时,就像这张图片(主要输出)中一样,但没有那么多 'end's.
#Duration loop
for i in range(len(dfDur01Mar22)):
#only display bus 'SG3079S'
if dfDur01Mar22.iloc[i,1] == 'SG3079S':
#print 'end' when first '0' appears
if dfDur01Mar22.iloc[i,2] == 0:
print('end')
#if charging type is 1
elif dfDur01Mar22.iloc[i,2] == 1: print(dfDur01Mar22.iloc[i,0],dfDur01Mar22.iloc[i,1],dfDur01Mar22.iloc[i,2])
主要输出
我相信评论中的@TimRoberts 给出了正确的答案,我将通过向您展示如何使用它来扩展它。
由于没有你的文件,我稍微修改了你的代码,但概念才是最重要的。您使用一个简单的 bool 变量作为标记,并检查它是否已设置,如果未设置,则 运行 剩下的检查最终值。根据您提供的信息,这可能是解决此类问题的最佳方法。代码:
import random
dfDur01Mar22 = []
for i in range(0,20):
chargingType = random.choice([0, 1, 1])
dfDur01Mar22.append(['', 'SG3079S', chargingType])
foundEnd = False
#Duration loop
for i in range(len(dfDur01Mar22)):
#only display bus 'SG3079S'
if dfDur01Mar22[i][1] == 'SG3079S':
#print 'end' when first '0' appears
if not foundEnd and dfDur01Mar22[i][2] == 0:
print('end')
foundEnd = True
#if charging type is 1
elif dfDur01Mar22[i][2] == 1:
print(dfDur01Mar22[i][0],dfDur01Mar22[i][1],dfDur01Mar22[i][2])
输出示例:
With check : Without check
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 end
end end
SG3079S 1 SG3079S 1
SG3079S 1 end
SG3079S 1 SG3079S 1
SG3079S 1 end
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 end
end
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
我目前的代码
所以现在基本上这是我的代码,我只希望在我的 excel sheet 中检测到值 0 时打印一个 'end'。我想要的主要输出是当值为“1”时,就像这张图片(主要输出)中一样,但没有那么多 'end's.
#Duration loop
for i in range(len(dfDur01Mar22)):
#only display bus 'SG3079S'
if dfDur01Mar22.iloc[i,1] == 'SG3079S':
#print 'end' when first '0' appears
if dfDur01Mar22.iloc[i,2] == 0:
print('end')
#if charging type is 1
elif dfDur01Mar22.iloc[i,2] == 1: print(dfDur01Mar22.iloc[i,0],dfDur01Mar22.iloc[i,1],dfDur01Mar22.iloc[i,2])
主要输出
我相信评论中的@TimRoberts 给出了正确的答案,我将通过向您展示如何使用它来扩展它。
由于没有你的文件,我稍微修改了你的代码,但概念才是最重要的。您使用一个简单的 bool 变量作为标记,并检查它是否已设置,如果未设置,则 运行 剩下的检查最终值。根据您提供的信息,这可能是解决此类问题的最佳方法。代码:
import random
dfDur01Mar22 = []
for i in range(0,20):
chargingType = random.choice([0, 1, 1])
dfDur01Mar22.append(['', 'SG3079S', chargingType])
foundEnd = False
#Duration loop
for i in range(len(dfDur01Mar22)):
#only display bus 'SG3079S'
if dfDur01Mar22[i][1] == 'SG3079S':
#print 'end' when first '0' appears
if not foundEnd and dfDur01Mar22[i][2] == 0:
print('end')
foundEnd = True
#if charging type is 1
elif dfDur01Mar22[i][2] == 1:
print(dfDur01Mar22[i][0],dfDur01Mar22[i][1],dfDur01Mar22[i][2])
输出示例:
With check : Without check
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 end
end end
SG3079S 1 SG3079S 1
SG3079S 1 end
SG3079S 1 SG3079S 1
SG3079S 1 end
SG3079S 1 SG3079S 1
SG3079S 1 SG3079S 1
SG3079S 1 end
end
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1
SG3079S 1