Pandas:将逗号分隔的列转换为多列

Pandas: pivot comma delimited column into multiple columns

我有以下 Pandas DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'id': [1, 2, 3, 4], 'type': ['a,b,c,d', 'b,d', 'c,e', np.nan]})

我需要根据逗号分隔符拆分类型列并将值旋转到多个列中以获得此

我查看了有关 pivot() 的 Pandas 文档,还搜索了 Whosebug。我没有找到任何似乎可以(直接或间接)实现我在这里需要做的事情的东西。有什么建议吗?

已编辑:

enke 的解决方案适用于 Pandas 1.3.5。但是,它不适用于最新版本 1.4.1。这是屏幕截图:

你可以使用str.get_dummies来获取虚拟变量;然后 join 回到 df:

out = df[['id']].join(df['type'].str.get_dummies(sep=',').add_prefix('type_').replace(0, float('nan')))

输出:

   id  type_a  type_b  type_c  type_d  type_e
0   1     1.0     1.0     1.0     1.0     NaN
1   2     NaN     1.0     NaN     1.0     NaN
2   3     NaN     NaN     1.0     NaN     1.0
3   4     NaN     NaN     NaN     NaN     NaN