我有一個列表理解,并在其中調用一個函數,并傳遞給它兩個參數。在該函數中,我有另一個列表推導式,它為我提供了一個 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()
返回一個值,并且您已將該值分配給,但是您沒有對. 您正在使用數據框列表,該列表不包括您剛剛創建的新本地。inplace
False
df
df
df
另一種選擇是將新存儲df
在您的df_list
. 不過,這對我來說感覺像是更多的工作,因為 Pandas 已經支持大部分操作的就地參數。
添加回答
舉報
0/150
提交
取消