首页 > 解决方案 > 如何从长度不等的列表中创建假人数据框?

问题描述

我有一个字典,其中每个键都是一个行索引,每个值都是一个虚拟值列表。例如:

my_dict = {'row1': ['a', 'b'], 'row2': ['a'], 'row3': ['b', 'c']}

我可以以有效的方式创建具有上述内容的假人数据框吗?

>>> df
      a      b      c
row1  True   True   False
row2  True   False  False
row3  False  True   True

标签: pythonpandasdummy-variable

解决方案


您可以使用pd.get_dummies

u = pd.DataFrame.from_dict(my_dict, orient='index')
pd.get_dummies(u, prefix='', prefix_sep='').max(level=0, axis=1).astype(bool)

          a      b      c
row1   True   True  False
row2   True  False  False
row3  False   True   True

您也可以使用简洁的stackand str.get_dummies,但这会稍微慢一些。

u.stack().str.get_dummies().max(level=0).astype(bool)

          a      b      c
row1   True   True  False
row2   True  False  False
row3  False   True   True

推荐阅读