2 回答

TA貢獻1802條經驗 獲得超5個贊
編輯以適應 OP 編輯
我就是這樣做的。首先,我將填充原始列的列表,使它們的長度都相同,并且更容易使用它們。之后就是創建列并用與列表中的位置對應的值填充它。假設我們的列表最大為 4 以作為一個更簡單的示例:
df = pd.DataFrame(sample, columns = headers)
df = df.rename(columns={'col1':'col_of_lists'})
max_length = max(df['col_of_lists'].apply(lambda x:len(x)))
df['col_of_lists'] = df['col_of_lists'].apply(lambda x:x + ([np.nan] * (max_length - len(x))))
for i in range(max_length):
df['col_'+str(i)] = df['col_of_lists'].apply(lambda x: x[i])

TA貢獻1893條經驗 獲得超10個贊
將一系列列表轉換為單獨列的最簡單方法是apply將它們轉換為系列,這會觸發'expand'結果類型:
result = df['col1'].apply(pd.Series)
此時,我們可以將自動編號的列調整為包含原始名稱'col1',例如:
result.columns = [
'col1_{}'.format(i + 1)
for i in result.columns]
最后,我們可以將它加入到原來的 DataFrame 中。使用這是第一列這一事實很容易,只需將其連接到原始框架的左側,'col1'在此過程中刪除原始:
result = result.join(df.drop('col1', axis=1))
rename()您甚至可以通過使用更改列名的方法將其全部作為單行來完成:
df['col1'].apply(pd.Series).rename(
lambda i: 'col1_{}'.format(i + 1),
axis=1,
).join(df.drop('col1', axis=1))
添加回答
舉報