簡體   English   中英

如何從長度不等的列表中創建虛擬數據框?

[英]How can I create a dataframe of dummies from a dict of lists of unequal length?

我有一個字典,其中每個鍵是一個行索引,每個值都是一個虛擬值列表。 例如:

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

你可以使用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

你也可以使用簡潔的stackstr.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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM