python 输出字典型矩阵_python – 从动态字典创建一个矩阵

我想创建一个矩阵.

输入:

data = [

{'a': 2, 'g': 1},

{'p': 3, 'a': 5, 'cat': 4}

...

]

输出:

a p cat g

1st 2 0 0 1

2nd 5 3 4 0

这是我的代码.但是,当数据量巨大时,我认为它并不聪明且非常慢.

有什么好方法可以做到这一点吗?

谢谢.

data = [

{'a': 2, 'g': 1},

{'p': 3, 'a': 5, 'cat': 4}

]

### Get keyword map ###

key_map = set()

for row in data:

key_map = key_map.union(set(row.keys()))

key_map = list(key_map) # ['a', 'p', 'g', 'cat']

### Create matrix ###

result = []

for row in data:

matrix = [0] * len(key_map)

for k, v in row.iteritems():

matrix[key_map.index(k)] = v

result.append(matrix)

print result

# [[2, 0, 0, 1], [5, 3, 4, 0]]

编辑

通过@wwii建议.使用Pandas看起来不错:

from pandas import DataFrame

result = DataFrame(data, index=range(len(data)))

print result.fillna(0, downcast=int).as_matrix().tolist()

# [[2, 0, 1, 0], [5, 4, 0, 3]]

解决方法:

我使用Pandas数据帧得到了第二个答案.但是,我的代码应该比你的代码简单一些.

In [1]: import pandas as pd

In [5]: data = [{'a': 2, 'g': 1},{'p': 3, 'a': 5, 'cat': 4}]

In [6]: df = pd.DataFrame(data)

In [7]: df

Out[7]:

a cat g p

0 2 NaN 1 NaN

1 5 4 NaN 3

In [9]: df = df.fillna(0)

In [10]: df

Out[10]:

a cat g p

0 2 0 1 0

1 5 4 0 3

我在iPython中编写了我的编码,我强烈推荐!

要保存到csv,只需使用额外的代码行:

df.to_csv('filename.csv')

标签:python,pandas,matrix

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值