我有两本大字典,其中有list有值。为了这个问题,我把它们命名为字典、foo和bar。
foo = {}
foo['a'] = []
foo['b'] = []
foo['a'].append(1)
foo['a'].append(2)
foo['b'].append(10)
foo['b'].append(30)
bar = {}
bar['a'] = []
bar['a'].append(5)
bar['a'].append(7)
bar['b'] = []
bar['b'].append(8)
bar['b'].append(34)
bar['b'].append(32)通过迭代一个字典,我想要构造一个数据框架,它将使我得到以下数据表:
id | viewed | presented
-----------------------
a | [1,2] | [5,7]
-----------------------
b | [10,30]| [8,32,34]所以我做了以下几件事:
import pandas as pd
df = pd.DataFrame(columns=['id', 'viewed', 'presented'])
for item in foo:
df = pd.Series({'id':item, 'viewed':foo[item], 'presented':bar[item]})但是当我打印我的数据帧时,它缺少了foo[a]和bar[a]的结果。
>>> df
id b
presented [8, 34, 32]
viewed [10, 30]
dtype: object
>>> len(df.index)
3看起来它不需要增加数据帧的索引来记录下一个元素,而是完成了编写。在本例中,解决此问题并按行顺序插入的最佳方法是什么。我看了另外两个堆栈溢出问题,它们都没有解决方案。
发布于 2015-01-29 21:14:22
你要做的就是:
df = pd.DataFrame({'viewed':foo, 'presented':bar}).reset_index()
df.columns = ['id', 'viewed', 'presented']并且您将获得以下所需的数据框架:
id viewed presented
0 a [1, 2] [5, 7]
1 b [10, 30] [8, 34, 32]https://stackoverflow.com/questions/28224611
复制相似问题