gpt4 book ai didi

python - 如何在Python中找到增加和减少的趋势

转载 作者:行者123 更新时间:2023-11-28 17:59:45 25 4
gpt4 key购买 nike

我正在尝试逐行比较数据框的不同列

for (i= startday to endday)
if(df[i]<df[i+1])
counter=counter+1
else
i=endday+1

目标是找到增加(或减少)的趋势(需要连续)我的数据看起来像这样

df= 1 2 3 0 1 1 1
1 1 1 1 0 1 2
1 2 1 0 1 1 2
0 0 0 0 1 0 1

(在这个例子中,startday 到 endday 是 7 但实际上这两个是不稳定的)

因此我希望找到这个 {2,0,1,0} 并且我需要它快速工作因为我的数据非常大(120 万)。由于时间限制,我尽量不使用循环(for、if 等)

我尝试了下面的代码,但找不到如果条件为假如何停止计数器

import math
import numpy as np
import pandas as pd

df1=df.copy()
df2=df.copy()
bool1 = (np.less_equal.outer(startday.startday, range(1,13))
& np.greater_equal.outer(endday.endday, range(1,13))
)

bool1= np.c_[np.zeros(len(startday)),bool1].astype('bool')

bool2 = (np.less_equal.outer(startday2.startday2, range(1,13))
& np.greater_equal.outer(endday2.endday2, range(1,13))
)

bool2= np.c_[bool2, np.zeros(len(startday))].astype('bool')


df1.insert(0, 'c_False',math.pi)
df2.insert(12, 'c_False',math.pi)
#df2.head()
arr_bool = (bool1&bool2&(df1.values<df2.values))

df_new = pd.DataFrame(np.sum(arr_bool , axis=1),
index=data_idx, columns=['coll'])

df_new.coll= np.select( condlist = [startday.startday > endday.endday],
choicelist = [-999],
default = df_new.coll)

最佳答案

在末尾添加零,然后使用np.diff,然后使用argmin 得到第一个“非正数”:

(np.diff(np.hstack((df.values, np.zeros((df.values.shape[0], 1)))), axis=1) > 0).argmin(axis=1)
>> array([2, 0, 1, 0], dtype=int64)

关于python - 如何在Python中找到增加和减少的趋势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com