簡體   English   中英

應用循環后,未更改原始數據幀

[英]No changes to original dataframe after applying loop

我有一個數據框列表,這樣

df_lst = [df1, df2]

我還創建了一個函數來刪除數據框中帶有“ 0”的行:

def dropzeros(df):
    newdf = df[df['x']!=0.0]
    return newdf

我嘗試通過循環應用此方法,並在循環中放置了一個賦值變量,但是即使在運行循環后,原始數據幀也保持不變。

for df in df_lst:
    df = dropzeros(df)

我也嘗試使用列表理解來解決這個問題

df_lst = [dropzeros(df) for df in df_lst]

我知道該函數有效,因為當我在命令dropzeros(df)之前和之后應用print(len(df))時,len下降了,但是,我可能會知道如何解決這個問題,例如我的原始數據幀運行循環后更改?

這是因為for循環中的變量df沒有引用列表中的值。 您將在循環的每個迭代中重新創建變量df

您可以通過enumeratepipe分配功能:

for idx, df in enumerate(df_lst):
    df_lst[idx] = df.pipe(dropzeros)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM