从字典列表创建python数据框

时间:2020-10-05 10:04:46

标签: python-3.x pandas dataframe

我有以下数据:

login,a,yex,joe,morgan,1,sanjay,2

我想创建一个数据框,其中每个键(来自上面的对)将是列名,每个值(来自上面的)将是行的索引。数据框中的值将计算键和值之间的每个匹配点。

预期结果应该是:

sentences = [{'mary':'N', 'jane':'N', 'can':'M', 'see':'V','will':'N'},
     {'spot':'N','will':'M','see':'V','mary':'N'},
     {'will':'M','jane':'N','spot':'V','mary':'N'},
     {'mary':'N','will':'M','pat':'V','spot':'N'}]

2 个答案:

答案 0 :(得分:3)

value_counts中的每列中使用DataFrame.apply,替换缺失值,转换为整数,最后由DataFrame.T进行转置:

df = df.apply(pd.value_counts).fillna(0).astype(int).T
print (df)
      M  N  V
mary  0  3  1
jane  0  2  0
can   1  0  0
see   0  0  2
will  3  1  0
spot  0  2  1
pat   0  0  1

或将DataFrame.stackSeriesGroupBy.value_countsSeries.unstack结合使用:

df = df.stack().groupby(level=1).value_counts().unstack(fill_value=0)
print (df)
      M  N  V
can   1  0  0
jane  0  2  0
mary  0  3  1
pat   0  0  1
see   0  0  2
spot  0  2  1
will  3  1  0

答案 1 :(得分:2)

pd.DataFrame(sentences).T.stack().groupby(level=0).value_counts().unstack().fillna(0)

       M    N   V
can   1.0   0.0 0.0
jane  0.0   2.0 0.0
mary  0.0   3.0 1.0
pat   0.0   0.0 1.0
see   0.0   0.0 2.0
spot  0.0   2.0 1.0
will  3.0   1.0 0.0

根据需要将其转换为整数。

pd.DataFrame(sentences).T.stack().groupby(level=0).value_counts().unstack().fillna(0).cast("int")