Как я могу создать фреймворк для манекенов из списка списков разной длины? - PullRequest
3 голосов
/ 26 марта 2019

У меня есть словарь, в котором каждый ключ является индексом строки, а каждое значение является списком фиктивных значений. Например:

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

Ответы [ 2 ]

4 голосов
/ 26 марта 2019

crosstab с конструктором

s=pd.DataFrame(list(my_dict.values()),index=my_dict.keys()).stack()

pd.crosstab(s.index.get_level_values(0),s).astype(bool)
Out[131]: 
col_0      a      b      c
row_0                     
row1    True   True  False
row2    True  False  False
row3   False   True   True
4 голосов
/ 26 марта 2019

Вы можете использовать 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

Вы также можете использовать stack и 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
...