我正在尝试建立一个二进制矩阵,其中行是组,列是可以在组中的项目。如果该项存在,则列中为1,否则为0。有办法有效地做到这一点吗?
例如,如果我有这样的字典:
{'4': '20180619.partials.55.1234567.1.csv.gz', '5': '20180519.payers.12.1015500.1.csv.gz'}
是否有一种快速的方法可以将其转换为一个矩阵,其中device1,device2等是行,而news1,news2等是具有1或0的列?
我尝试对列进行迭代,但是它效率低下,我认为有一种更简单的方法可以实现!
答案 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