我有一個串列中的數字,這些數字應該連續分配給資料幀的某些行。
串列=[2,5,7,12….]
在類似于下表的資料框中,我需要執行以下操作:
以1開頭的 frame_index 將List 的下一個元素作為“sequence_number”

Frame_Index==1然后將 List 的第一個元素分配為 Sequence_number。Frame_index == 1 再次,因此將 List 的第二個元素分配為 Sequence_number。
所以我的目標是實作一個像這樣的新資料框:

我不知道該使用哪些功能。如果這不是 python 語言,我將使用 for 回圈并檢查 frame_index==1 的位置,但我的資料集很大,我需要一種 pythonic 方式來實作所描述的解決方案。我很感激任何幫助。
編輯:我嘗試了以下方法來填充我的 List 值,然后將 fillna 與 ffill 一起使用:
concatenated_df['Sequence_number']=[List[i] for i in
concatenated_df.index if (concatenated_df['Frame_Index'] == 1).any()]
但當然我收到“串列索引超出范圍”錯誤。
uj5u.com熱心網友回復:
我認為你可以分兩步完成。
- 添加列并填充您的串列,其中 frame_index == 1。
- 將df.fillna()與
method="ffill"kwarg一起使用。
import pandas as pd
df = pd.DataFrame({"frame_index": [1,2,3,4,1,2]})
sequence = [2,5]
df.loc[df["frame_index"] == 1, "sequence_number"] = sequence
df.ffill(inplace=True) # alias for df.fillna(method="ffill")
這將放置sequence_numberas float64,這在您的用例中可能是可以接受的,如果您希望它是int64,那么您可以在創建列(第 4 行)時強制使用它或稍后進行轉換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386210.html
