熊猫,从字典到熊猫来绘制布尔值

时间:2018-03-12 12:08:20

标签: python pandas

我是新的Python程序员, 我想要这个,

dic = {"word1": ["a","b","c"], "word2": ["b", "d", "e"], "word3": ["a", "f", "c"]}

to,这个DataFrame对象。

enter image description here

我尝试过这样的代码

df = pd.DataFrame(index=["a","b","c","d","e","f"], columns=[])
for i in result:
print("i",i)
print("v", v)
df2 = pd.DataFrame(i)
df.append(df2)

请帮助我如何编码

2 个答案:

答案 0 :(得分:2)

首先将dict转换为Series,然后使用MultiLabelBinarizer + DataFrame构造函数,最后转换为布尔值:

d = {"word1": ["a","b","c"], "word2": ["b", "d", "e"], "word3": ["a", "f", "c"]}

s = pd.Series(d)
from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()

df = pd.DataFrame(mlb.fit_transform(s),columns=mlb.classes_, index=s.index).astype(bool)

str.join的另一个解决方案,可以|加入str.get_dummies中的默认分隔符:

df = s.str.join('|').str.get_dummies().astype(bool)
print (df)
           a      b      c      d      e      f
word1   True   True   True  False  False  False
word2  False   True  False   True   True  False
word3   True  False   True  False  False   True

答案 1 :(得分:1)

以下是使用pd.get_dummies的一种方式:

import pandas as pd

d = {"word1": ["a","b","c"], "word2": ["b", "d", "e"], "word3": ["a", "f", "c"]}

df = pd.DataFrame.from_dict(d, orient='index')
df['values'] = df.values.tolist()

df = df.drop(df.columns[:], 1)\
       .join(pd.get_dummies(df['values'].apply(pd.Series).stack()).sum(level=0))\
       .astype(bool)

<强>结果

           a      b      c      d      e      f
word1   True   True   True  False  False  False
word2  False   True  False   True   True  False
word3   True  False   True  False  False   True

<强>解释

  • 为每个单词创建pd.Series个列表。
  • 通过一些操作将pd.get_dummies应用于此系列。
  • 将类型从int转换为bool以用于显示目的。