快捷搜索: 王者荣耀 脱发

某一列数据为0的时间段

    需求 代码 path = r’文件路径’ def get_df_open_inteval(path): # 获取数据 df = pd.read_csv(path,encoding=gbk) # 取相关数据 df1 = df[[时间,申卖价1]] # 把申卖价大于0的变为1 df1[申卖价1][df1[申卖价1] > 0] = 1 # 新增一列,用shift函数向下移动一步 df1[shift_value] = df1[申卖价1].shift() # 把NaN变为1 df1 = df1.fillna(1) # shift_value改变类型 df1[shift_value] = df1[shift_value].astype(int64) # 取申卖价1为0,shift_value为1的时间,这是开始的时间 result1 = list(df1[(df1[申卖价1] == 0) & (df1[shift_value] == 1)][时间]) # 取申卖价1为1,shift_value为0的时间,这是结束的时间 result2 = list(df1[(df1[申卖价1] == 1) & (df1[shift_value] == 0)][时间]) # 这里判断最后一段如果没有结束时间就直接取最后的 if len(result1)!=len(result2): result2.append(df1.iloc[-1][时间]) # 循环得到一个list,元素是元组 res_list = [] for i in range(len(result1)): res_list.append((result1[i],result2[i])) return res_list 循环的写法 time_tuple = [] i = 0 while i<len(df1): cnt=0 while df1[申卖价1][i] == 0: cnt += 1 if cnt == 1: begin = df1[时间][i] i += 1 if i == 3170: break if df1[申卖价1][i-1] == 0: end = df1[时间][i-1] time_tuple.append((begin,end)) i += 1
经验分享 程序员 微信小程序 职场和发展