如何将包含数组中的值的熊猫列扩展到多列?

Posted

技术标签:

【中文标题】如何将包含数组中的值的熊猫列扩展到多列?【英文标题】:How to expand pandas column containing values in arrays to multiple columns? 【发布时间】:2021-12-01 23:48:06 【问题描述】:

我有一个数据框,其列名为“gear”,其中包含值列表...我现在要做的是将每个列表中的每个元素移动到相应的列。

有没有不需要 for 循环的方法来做到这一点? 例如,在第一行中,列表中的值“Hengerfeste”应移动到列表中的每个元素的“Hengerfeste”列,依此类推。

【问题讨论】:

你为什么不想要一个 for 循环? 需要很长时间的主要问题是多次调用 .iloc 来分配值 【参考方案1】:

试试explode,然后是groupby().value_counts()

#sample data
df = pd.DataFrame('col':[['a','b','c'], ['a','c','x'],[],['b','x','y']])


(df['your_list_col'].explode()
   .groupby(level=0).value_counts()
   .unstack(fill_value=0)
   .reindex(df.index, fill_value=0)
)

输出:

col  a  b  c  x  y
0    1  1  1  0  0
1    1  0  1  1  0
2    0  0  0  0  0
3    0  1  0  1  1

【讨论】:

你真是个天才!谢谢这个作品!

以上是关于如何将包含数组中的值的熊猫列扩展到多列?的主要内容,如果未能解决你的问题,请参考以下文章

将多列中的列表合并到熊猫中的单列

如何从熊猫的同一列中创建一个行值数组?

如何使用包含所有映射的查找表替换多列中的值?

如何将熊猫中的一列列表转换为Python中唯一值的稀疏DataFrame [重复]

如何将数据库中一张表的多列映射到类中的一个数组/列表?

字典列表中的熊猫数组