你可以申請一個加入到列表中的元素,使一個逗號分隔字符串,然後調用矢量化str.split
與expand=True
來創建新的列:
In [12]:
df[['UserID', 'email', 'address']] = df['col3'].apply(','.join).str.split(expand=True)
df
Out[12]:
alias col3 name \
0 david [3109892828, [email protected], 123 main st] mark
1 twixt [5468392873, [email protected], 345 grand st] john
UserID email address
0 3109892828,[email protected],123 main st
1 5468392873,[email protected],345 grand st
一個清潔的方法將應用pd.Series
構造函數,這將變成每個列表成系列:
In [15]:
df[['UserID', 'email', 'address']] = df['col3'].apply(pd.Series)
df
Out[15]:
alias col3 name UserID \
0 david [3109892828, [email protected], 123 main st] mark 3109892828
1 twixt [5468392873, [email protected], 345 grand st] john 5468392873
email address
0 [email protected] 123 main st
1 [email protected] 345 grand st
這可能會造成困難,如果 「列」 合法包含逗號......也許像'DF [ '身份證', '郵件', '地址'] = df.col3.apply(PD。系列)'然後放下'col3'? –
嗯。誠然,除非OP在他們的數據中有這個數據,我不認爲這是一個問題,仍然應用系列ctor在這裏是更清潔和足夠的,將更新,謝謝 – EdChum
通常,這將是一個很好的解決方案,但它似乎我的數組沒有每行有相同數量的列..所以,如果嵌套列表的每個記錄的字段數不同,我該怎麼辦?這裏是我得到的錯誤:ValueError:列的長度必須與密鑰長度相同 – DNburtonguster