df1_2['cut']=np.cumsum(df1_2['judge_wind']!=(['NONE']+df1_2['judge_wind'].loc[0:(len(df1_2)-2),].tolist()))
时间: 2024-05-29 15:14:45 浏览: 64
这段代码的作用是给DataFrame df1_2添加一列名为'cut'的列,列中的元素是对'judge_wind'列进行判断后得到的累加值。具体来说,它使用了numpy中的cumsum函数,对'judge_wind'列进行判断是否与前一个元素相同,如果不同则返回True,否则返回False,然后将这些True和False进行累加,并将结果存储在'cut'列中。另外,['NONE']是一个无效的语法,应该修改为'NONE'。最后一部分的'.tolist()'是将Series类型的数据转换成List类型的数据。
相关问题
解释下这段代码 第三方商品 __df1 = __temp_df[__temp_df['show_name'] == '第三方商品'] if not __df1.empty: __df1 = __df1.pivot_table(index=['name', 'show_name'], values=['buy_num'], aggfunc=np.sum).reset_index() else: __df1 = __df1[['name', 'show_name', 'buy_num']] # 非第三方商品 __df2 = __temp_df[__temp_df['show_name'] != '第三方商品'] if not __df2.empty: __df2 = __df2.pivot_table(index=['gt_uuid', 'show_name'] ,values=['buy_num'], aggfunc=np.sum).reset_index() __df2 = pd.merge(left=__df2, right=pd.DataFrame(s_gt_rv, columns=['gt_uuid', 'goods_name']), how='left', on='gt_uuid') __df2 = __df2[['goods_name', 'show_name', 'buy_num']] __df2.rename(columns={'goods_name': 'name'}, inplace=True) else: __df2 = __df2[['name', 'show_name', 'buy_num']] __temp_df = pd.concat([__df1, __df2]) del __df1, __df2 __temp_df.rename(columns={'name': 'goods_name', 'show_name': 'gc_name', 'buy_num': 'num'}, inplace=True) __temp_df.sort_values(by='num', ascending=False, inplace=True) return_data['goods']['goods_list'] = __temp_df.to_dict(orient='records') __temp_df = __temp_df[['gc_name', 'num']] __temp_df = __temp_df.pivot_table(index='gc_name', values='num', aggfunc=np.sum).reset_index() __temp_df.sort_values(by='num', ascending=False, inplace=True) return_data['goods']['gc_list'] = __temp_df.to_dict(orient='records') del __temp_df
这段代码是对一个名为 `__temp_df` 的数据框进行处理,并将处理结果存储在 `return_data` 字典的 `goods` 键下。
首先,根据条件 `__temp_df['show_name'] == '第三方商品'`,筛选出满足条件的行,存储在 `__df1` 中。如果 `__df1` 不为空,则对其进行数据透视操作,按照 `name` 和 `show_name` 分组,计算 `buy_num` 的总和,并重置索引。否则,保留 `__df1` 的 `name`、`show_name` 和 `buy_num` 列。
接着,根据条件 `__temp_df['show_name'] != '第三方商品'`,筛选出满足条件的行,存储在 `__df2` 中。如果 `__df2` 不为空,则对其进行数据透视操作,按照 `gt_uuid` 和 `show_name` 分组,计算 `buy_num` 的总和,并重置索引。然后,将 `__df2` 与一个包含列名为 `['gt_uuid', 'goods_name']` 的 DataFrame 进行左连接,并将结果存储在 `__df2` 中。最后,保留 `__df2` 的 `goods_name`、`show_name` 和 `buy_num` 列,并将列名 `goods_name` 改为 `name`。
接下来,通过合并 `__df1` 和 `__df2` 构成新的数据框 `__temp_df`。之后,删除 `__df1` 和 `__df2` 变量。
然后,对 `__temp_df` 进行列名的重命名,将 `name` 改为 `goods_name`,`show_name` 改为 `gc_name`,`buy_num` 改为 `num`。将 `__temp_df` 按照 `num` 降序排序。
接着,将 `__temp_df` 转换为字典格式,并将结果存储在 `return_data` 字典的 `goods_list` 键下。再次对 `__temp_df` 进行处理,只保留 `gc_name` 和 `num` 两列,并进行数据透视操作,按照 `gc_name` 分组,计算 `num` 的总和,并重置索引。最后,将结果按照 `num` 降序排序。
最后,将处理后的 `__temp_df` 转换为字典格式,并将结果存储在 `return_data` 字典的 `gc_list` 键下。最后,删除 `__temp_df` 变量。
df = pd.read_csv('./part-00000-66a9d65e-cad2-4f62-af22-e9acbec50dbc.c000.csv', low_memory=False) sig_cell_volt = np.array(df.iloc[:1000, 10]) sum_volt = list(np.array(df.iloc[:1000, 6])) # print(sig_cell_volt) all_cell_vot = [] for i in sig_cell_volt: i = i[2:] cell_str = i.split('_') cell_list = [] for t in cell_str: t = float(t)/1000 cell_list.append(t) # print(len(cell_list)) all_cell_vot.append(cell_list) all_cell_vot = np.array(all_cell_vot) # x_data = torch.from_numpy(all_cell_vot) print(all_cell_vot) # sing_vol_df = pd.DataFrame(all_cell_vot) # writer = pd.ExcelWriter('vol.xlsx') # sing_vol_df.to_excel(writer,'sheet1',float_format='%.5f') df1 = pd.read_excel('vol.xlsx') col_name=df1.columns.tolist() col_name.insert(95, '总电压') df1['总电压'] = sum_volt df1.to_excel('piggy22.xlsx')
这段代码首先是在上一个代码段的基础上进行的。在处理完数据后,代码将 all_cell_vot 数组中的数据存储到了名为 sing_vol_df 的 DataFrame 中,并将这个 DataFrame 存储到了一个名为 vol.xlsx 的 Excel 文件中。
接下来,代码又读取了 vol.xlsx 文件,并将 DataFrame 中的列名存储到了名为 col_name 的列表中。然后,通过 insert 方法在 col_name 列表的索引 95 处插入了一个名为“总电压”的列名。接着,代码将 sum_volt 列表中的数据存储到了新添加的“总电压”列中。最后,通过 to_excel 方法将更新后的 DataFrame 存储到了一个名为 piggy22.xlsx 的 Excel 文件中。
阅读全文