有一个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计数器设置为0。
4)如果这些计数器中的任何一个的值等于6,则将对应行的count列中的值(通过将它们存储在row_counter中来跟踪行)更改为存储在answer_counter中的值。然后,将answer_counter递增1,并将正负计数器重置为0。
注意由于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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句