有一个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/

10-12 18:15