簡體   English   中英

切片/重置索引后在熊貓DF上使用iterrows()的問題

[英]Problems using iterrows() with Pandas DF after slice/reset index

我從CSV文件讀取了幾千行,其中包含用於計算不同輸出的數據。 我讀了這個CSV文件,並將輸入存儲在Pandas數據框中。 然后,我使用itterrows()遍歷數據幀。 有時我的代碼會失敗,這時我希望讀取原始文件,但是在失敗后的行繼續進行處理。 因此,當發生這種情況時,請設置我的代碼,以便取消注釋兩行,並在進入itterrows()進行循環之前將原始數據幀切成itterrows()大小:

# slicing it and re-indexing when a restart is needed
df_slice = df.iloc[1292:,]
for index,row in df_slice.iterrows():

但是,如果如上所述對原始數據幀進行切片,則“ itterrows()”循環中的索引值始於1292,因此從較小的切片數據幀的頂部跳過1292個位置。 我怎樣才能從0/1開始呢?

我嘗試重置索引:

# slicing it and re-indexing when a restart is needed
df_slice = df.iloc[1292:,]
df_slice.reset_index()

for index,row in df_slice.iterrows():

但這並沒有改變for index,row in df_slice.iterrows():索引中的for index,row in df_slice.iterrows():仍然停留在1292,因此在切片索引上跳了1292點。

因此,如何將iterrows()到某個起始行(在原始索引上)或適當地切片並重置較小數據幀的索引,以能夠從新的“頂部”行開始並向下移動。

您需要使用.ix而不是.iloc對DataFrame進行切片,如下所示:

df_slice = df.ix[1292:]

我只是有一個類似的問題,我的困惑來自於以下事實:在Pandas中切片DataFrame有兩種不同的方式。 按標簽( .ix )和整數位置( .iloc )。 df.itterows()返回基於標簽的索引,因此.ix來的地方繼續使用.ix

這里也有同樣的問題:df_slice.reset_index()不會重置df_slice上的索引,而是重置它的副本上的索引。 使用drop,使舊索引不會在df_slice中顯示為列。

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

暫無
暫無

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

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