我有一个以下形式的数据框(df):
name alias col3
mark david ['3109892828','email@john.com','123 main st']
john twixt ['5468392873','email@twix.com','345 grand st']
将 col3 拆分为新的命名列的简洁方法是什么? (也许使用 lambda 和 apply)
最佳答案
您可以对列表元素应用联接以生成逗号分隔的字符串,然后调用矢量化 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@john.com, 123 main st] mark
1 twixt [5468392873, email@twix.com, 345 grand st] john
UserID email address
0 3109892828,email@john.com,123 main st
1 5468392873,email@twix.com,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@john.com, 123 main st] mark 3109892828
1 twixt [5468392873, email@twix.com, 345 grand st] john 5468392873
email address
0 email@john.com 123 main st
1 email@twix.com 345 grand st
关于python - 将 pandas 数据框嵌套列表拆分为新的命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655068/