我正在处理一个数据集,该数据集包含python 2.7中的年度数据和终身数据。我有一个存储终身数据的字典,以及年度数据的内部数据框架。所以它看起来像
Bear1
{'color':'brown',
'grown_size':'7ft',
'stats': df1}
}
其中数据框'df1'的构建方式如下:
meals children territory
4 5 8
2 4 6
5 2 7
我想获得一个矩形的数据框,每一行都有不同的年份数据以及所有终身统计数据,所以这将变成类似:
color grow_size meals children territory
brown 7ft 4 5 8
brown 7ft 2 4 6
brown 7ft 5 2 7
我认为这需要类似于pandas中的Series.repeat()方法,尽管这对我来说还没有用。什么是实现这一目标的最快方法,因为有许多这样的熊具有不同的年龄!
EDIT 不幸的是我发现了我的问题。年度数据已经在数据框内,而不在字典内!
我为此尝试了以下代码:
pd.DataFrame.from_dict(bears['bear1'])
'bear ['bear1']'是上面发布的字典,但我收到以下消息:
File "<stdin>", line 1, in <module>
File "/Users/masongardner/Library/Python/2.7/lib/python/site- packages/pandas/core/frame.py", line 226, in __init__
mgr = self._init_dict(data, index, columns, dtype=dtype)
File "/Users/masongardner/Library/Python/2.7/lib/python/site-packages/pandas/core/frame.py", line 363, in _init_dict
dtype=dtype)
File "/Users/masongardner/Library/Python/2.7/lib/python/site-packages/pandas/core/frame.py", line 5158, in _arrays_to_mgr
index = extract_index(arrays)
File "/Users/masongardner/Library/Python/2.7/lib/python/site-packages/pandas/core/frame.py", line 5197, in extract_index
ValueError:如果使用所有标量值,则必须传递索引
谢谢!
答案 0 :(得分:0)
使用from_dict
:
In [20]:
d={'color':'brown',
'grown_size':'7ft',
'stats': {2007:[1,5,7,2],
2008:[5,3,4,5],
2009:[5,2,6,7]}
}
pd.DataFrame.from_dict(d)
Out[20]:
color grown_size stats
2007 brown 7ft [1, 5, 7, 2]
2008 brown 7ft [5, 3, 4, 5]
2009 brown 7ft [5, 2, 6, 7]
pd.DataFrame(d)
也可以使用
答案 1 :(得分:0)
修改
这是一种简单的方法,可以让你拥有一只熊。
def create_list_sets(lst, n):
j = len(lst)
res = []
if n > j:
n = j
for k in range(j - n + 1)
res.append(lst[k:k+n])
return res
你有多少只熊?如果你想在同一个DataFrame中连接所有熊和数据,请使用pandas.concat