Pandas 列錶列:為每個列表元素建立一行
在Pandas 資料框中,可能需要轉換包含列表的列分成多行,其中列表的每個元素佔據自己的行。要實現這一點,有兩個可行的選擇。
Pandas>=0.25 內建的爆炸方法
對於 Pandas 0.25 及更高版本,.explode( ) 方法是專門為此目的引入的。它有效地將列表轉換為單獨的行。
df = pd.DataFrame({'trial_num': [1, 2, 3, 1, 2, 3], 'subject': [1, 1, 1, 2, 2, 2], 'samples': [list(np.random.randn(3).round(2)) for i in range(6)] }) df.explode('samples').reset_index(drop=True) # Resetting the index for clarity
此方法處理包含清單和標量以及空白清單和 NaN 的混合欄位。但是,需要注意的是,explode 一次對單一列進行操作。
Pandas 的自訂函數
對於早期版本的Pandas,可以使用自訂函數:
def explode_list_column(df, column): # Create an empty list to store the expanded rows exploded_rows = [] # Iterate through each cell in the specified column for row in df[column]: # Iterate through each element in the list for element in row: # Add a new row to the list, copying data from the current row and adding the new element exploded_rows.append(list(row) + [element]) # Convert the expanded rows into a DataFrame return pd.DataFrame(exploded_rows, columns=df.columns + ['list_element'])
此函數採用DataFrame和包含清單的列的名稱作為參數,它傳回一個新的DataFrame,其中每個列表元素有一列。
# Applying the exploding function exploded_df = explode_list_column(df, 'samples')
以上是如何將 Pandas 清單的列轉換為多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!