首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典和字典列表

字典和字典列表
EN

Stack Overflow用户
提问于 2018-03-10 10:14:07
回答 4查看 86关注 0票数 0

我的数据是一本字典,里面有一个字典列表。

代码语言:javascript
复制
data = {'John': [{'date': u'2018-01-21', 'name' : u'John', 'fieldname': u'lunch', 'fieldvalue': u'10'}, {'date': u'2018-01-21', 'name' : u'John', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 'Maria': [{'date': u'2018-01-21', 'name' : u'Maria', 'fieldname': u'lunch', 'fieldvalue': u'10'}, {'date': u'2018-01-21', 'name' : u'Maria', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 'Roger': [{'date': u'2018-01-21', 'name' : u'Roger', 'fieldname': u'lunch', 'fieldvalue': u'10'}, {'date': u'2018-01-21', 'name' : u'Roger', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 'Peter': [{'date': u'2018-01-21', 'name' : u'Peter', 'fieldname': u'lunch', 'fieldvalue': u'10'}, {'date': u'2018-01-21', 'name' : u'Peter', 'fieldname': u'dinner', 'fieldvalue': u'9'}]}

我要做的是在每个data.key中有一个字典列表的数据

首先: mydf = df(data.keys())

代码语言:javascript
复制
mydf
Out[18]: 
       0
0   John
1  Roger
2  Peter
3  Maria 

而不是我试图让df.data在每个dict.key中

代码语言:javascript
复制
mydf(df(data))
Traceback (most recent call last):

  File "<ipython-input-43-5c9743ed39d1>", line 1, in <module>
    mydf(df(data))

TypeError: 'DataFrame' object is not callable

我的最后一个目标是定义一个函数来为每个包含数据的键编写一个csv。

我的问题是如何将数据帧放在字典键中,对于每个键,对应的数据帧。

要存储在csv中的每个dict.key的期望输出:

代码语言:javascript
复制
name  date      fieldname fieldvalue   
Roger 20180301  lunch      12
Roger 20180301  dinner     12
Roger 20180301  lunch      12
Roger 20180301  dinner     12
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-10 10:52:19

试试这个:

代码语言:javascript
复制
import pandas as pd

data = {
'John': [{'date': u'2018-01-21', 'name' : u'John', 'fieldname': u'lunch', 'fieldvalue': u'10'}, 
{'date': u'2018-01-21', 'name' : u'John', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 
'Maria': [{'date': u'2018-01-21', 'name' : u'Maria', 'fieldname': u'lunch', 'fieldvalue': u'10'}, 
{'date': u'2018-01-21', 'name' : u'Maria', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 
'Roger': [{'date': u'2018-01-21', 'name' : u'Roger', 'fieldname': u'lunch', 'fieldvalue': u'10'}, 
{'date': u'2018-01-21', 'name' : u'Roger', 'fieldname': u'dinner', 'fieldvalue': u'9'}], 
'Peter': [{'date': u'2018-01-21', 'name' : u'Peter', 'fieldname': u'lunch', 'fieldvalue': u'10'}, 
{'date': u'2018-01-21', 'name' : u'Peter', 'fieldname': u'dinner', 'fieldvalue': u'9'}]}

new_data = []
for key, value in data.items():
    new_data.extend(value)
df = pd.DataFrame(new_data, columns  = ['name', 'date', 'fieldname', 'fieldvalue'])

DataFrame结果:

代码语言:javascript
复制
    name        date fieldname fieldvalue
0   John  2018-01-21     lunch         10
1   John  2018-01-21    dinner          9
2  Maria  2018-01-21     lunch         10
3  Maria  2018-01-21    dinner          9
4  Roger  2018-01-21     lunch         10
5  Roger  2018-01-21    dinner          9
6  Peter  2018-01-21     lunch         10
7  Peter  2018-01-21    dinner          9

有了这个,把熊猫的数据写到csv应该是小菜一碟。

代码语言:javascript
复制
df.to_csv('output.csv', sep=',')
票数 1
EN

Stack Overflow用户

发布于 2018-03-10 11:20:49

使用numpy中的concatenate函数,可以在一行中完成。

代码语言:javascript
复制
# convert dictionary to data frame
df = pd.DataFrame(list(np.concatenate(list(data.values()))))

# write the file
df.to_csv('output.csv', index=False)

# print 
print(df)

         date   fieldname   fieldvalue  name
0   2018-01-21      lunch           10  John
1   2018-01-21     dinner            9  John
2   2018-01-21      lunch           10  Maria
3   2018-01-21     dinner            9  Maria
4   2018-01-21      lunch           10  Roger
5   2018-01-21     dinner            9  Roger
6   2018-01-21      lunch           10  Peter
7   2018-01-21     dinner            9  Peter
票数 0
EN

Stack Overflow用户

发布于 2018-03-10 11:21:40

使用reduce解压缩data

代码语言:javascript
复制
from functools import reduce # if python2, delete this line.
df = pd.DataFrame(reduce(lambda x, y: x + y, list(data.values())))
df.to_csv("data.csv", index=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49207869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档