2 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
編輯以適應(yīng) OP 編輯
我就是這樣做的。首先,我將填充原始列的列表,使它們的長(zhǎng)度都相同,并且更容易使用它們。之后就是創(chuàng)建列并用與列表中的位置對(duì)應(yīng)的值填充它。假設(shè)我們的列表最大為 4 以作為一個(gè)更簡(jiǎn)單的示例:
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貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
將一系列列表轉(zhuǎn)換為單獨(dú)列的最簡(jiǎn)單方法是apply將它們轉(zhuǎn)換為系列,這會(huì)觸發(fā)'expand'結(jié)果類型:
result = df['col1'].apply(pd.Series)
此時(shí),我們可以將自動(dòng)編號(hào)的列調(diào)整為包含原始名稱'col1',例如:
result.columns = [
'col1_{}'.format(i + 1)
for i in result.columns]
最后,我們可以將它加入到原來的 DataFrame 中。使用這是第一列這一事實(shí)很容易,只需將其連接到原始框架的左側(cè),'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))
添加回答
舉報(bào)