将字典转换为二进制矩阵的快速方法?

时间:2019-07-23 16:02:09

标签: python pandas dataframe

我正在尝试建立一个二进制矩阵,其中行是组,列是可以在组中的项目。如果该项存在,则列中为1,否则为0。有办法有效地做到这一点吗?

例如,如果我有这样的字典:

{'4': '20180619.partials.55.1234567.1.csv.gz', '5': '20180519.payers.12.1015500.1.csv.gz'}

是否有一种快速的方法可以将其转换为一个矩阵,其中device1,device2等是行,而news1,news2等是具有1或0的列?

我尝试对列进行迭代,但是它效率低下,我认为有一种更简单的方法可以实现!

1 个答案:

答案 0 :(得分:0)

我相信这是重复的:

converting dictionary to binary in python

test_dict = {"device1" : ("news1", "news2"), 
             "device2" : ("news2", "news3"), 
             "device3" : ("news2", "news4")}

df = pd.concat([pd.Series(v, name=k).astype(str) for k, v in test_dict.items()], 
               axis=1)
df = pd.get_dummies(df.stack()).sum(level=1).clip_upper(1)

df的输出:

         news1  news2  news3  news4
device1      1      1      0      0
device2      0      1      1      0
device3      0      1      0      1
相关问题