有一个excel工作表,其中有“差异”列,其值可以为负也可以为正。因此,我想发现的是,假设负值或正值连续出现6次,然后将其计为1,依此类推。
我想要的最终结果
Difference count
12
-134
34
234
22
23
43
566 1
-23
-21
-235
-58
-787
-34 2
3
最佳答案
以下代码将起作用,这里是简要概述:
1)在“差异”列上循环。
2)如果数字为正,则将plus_counter递增1,并将减数计数器设置为0。
3)如果数字为负,则将minus_counter加1,并将plus counter设置为0。
4)如果这些计数器中的任何一个的值等于6,则将对应行的count列中的值(通过将行存储在row_counter中来跟踪行)更改为存储在answer_counter中的值。之后,将answer_counter递增1,并将正负计数器重置为0。
N.B由于0既不是正数也不是负数,因此将忽略它们。
import pandas as pd
diff = [
12,
-134,
34,
234,
22,
23,
43,
566,
-23,
-21,
-235,
-58,
-787,
-34,
3
]
df = pd.DataFrame(diff, columns = ['Difference'])
df['count'] = 0
plus_counter = 0
minus_counter = 0
row_counter = 0
answer_counter = 1
for each in df['Difference']:
if each > 0:
minus_counter = 0
plus_counter += 1
if plus_counter == 6:
df['count'][row_counter] = answer_counter
plus_counter = 0
answer_counter += 1
elif each < 0:
plus_counter = 0
minus_counter += 1
if minus_counter == 6:
df['count'][row_counter] = answer_counter
minus_counter = 0
answer_counter += 1
row_counter += 1
关于python - 如何计算使用 Pandas 在Excel工作表中if语句为true的次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58913221/