为了账号安全,请及时绑定邮箱和手机立即绑定

索引未重置

索引未重置

冉冉说 2021-06-20 11:29:09
我有一个列表理解,并在其中调用一个函数,并传递给它两个参数。在该函数中,我有另一个列表推导式,它为我提供了一个 DataFrame 列表。我必须清理每个 DataFrame 中的数据,因此我使用 for 循环遍历列表中的每个 DataFrame。在每次迭代中,我会做任何我需要做的事情,其中一件事是重置每个 DataFrame 的索引。我在函数之外放置了一个打印语句,只是为了确保我按照我需要的方式获取所有内容,但不会重置索引。为什么不重置?def function(xls, a_list):    # a_list is a list of strings    df_list = [pd.read_excel(xls, sheet_name=a) for a in a_list]    for df in df_list:        df.dropna(how='all', inplace=True)        df['Meal'] = df['Meal'].fillna(method='ffill')        # RIGHT HERE         df = df.reset_index(drop=True)    return df_list# ------------------------------------list_of_df = [function(xls, monthly_sheets) for xls, monthly_sheets in zip(xls_files, sheet_names) if monthly_sheets]例如,这就是我得到的:        Col1        Col20        a            f1        b            g4        c            h7        d            i8        e            j我想要的是这个:        Col1        Col20        a            f1        b            g2        c            h3        d            i4        e            j我错过了什么?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

代替

df = df.reset_index(drop=True)

df.reset_index(drop=True, inplace=True)

问题是如果isdf.reset_index() 返回一个值,并且您已将该值分配给,但是您没有对. 您正在使用数据框列表,该列表不包括您刚刚创建的新本地inplaceFalsedfdf df

另一种选择是将新存储df在您的df_list. 不过,这对我来说感觉像是更多的工作,因为 Pandas 已经支持大部分操作的就地参数。


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号