python - 将 pandas 数据框嵌套列表拆分为新的命名列

标签 python list pandas

我有一个以下形式的数据框(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/

相关文章:

python - 如何从变量指定浮点小数精度?

Python - Mechanize 的请求 header

python - 无法使用jython编译python程序

python - 使用坐标列表进行索引的更多 Pythonic 方法

Python 计算 list2 中 list1 的元素出现次数

python - 如何从另一个字符串数组中减去一个字符串数组?

c# - 比较两个列表并删除相同的结果c#

python - 使用应用于 groupby 的函数结果来计算原始 df

python - 等效于 Python Pandas 中的 R rbind.fill

python - 性能缓慢 - Python(代码)