【发布时间】:2020-01-18 03:54:40
【问题描述】:
我对 Python 还是很陌生,在 Pyhton 中将字典转换为 DataFrame 时遇到了困难。 我的字典包含不同股票在不同日期上涨的概率。当我尝试将其转换为 DataFrame 时,股票名称被视为列名,这正是我想要的方式。我的问题是,所有值都出现在每列的第一行。
这基本上是我尝试使用的代码:
一开始我有一个这样的股票样本:
stocks = ['MSFT', 'AAPL', 'AMZN']
为了获得向上运动的概率,我使用了以下代码:
proba = {stock: clf[stock].predict_proba(X_test[stock]) for stock in stocks}
print(proba)
给我以下输出:
{'MSFT': array([[0.30994211],
[0.15608782],
[0.15608782],
[0.16334815],
[0.14721092],
[0.29563944],
[0.16334815],
[0.24821587],
[0.43182074],
[0.30994211],
[0.28825953],
.
.
.
[0.34160564]]), 'AAPL': array([[0.48241034],
[0.47819121],
[0.48937013],
[0.49798732],
[0.50132104],
.
.
.
[0.03298367]]), 'AMZN': array([[0.51179782],
[0.64532595],
[0.56331474],
[0.66499856],
[0.55492011],
[0.4623048 ],
[0.4536123 ],
[0.4613901 ],
[0.39305493],
[0.44297254],
.
.
.])}
我现在的目标是将此字典转换为如下所示的 DataFrame:
MSFT AAPL AMZN
0 0.875 0.983 0.276
1 0.345 0.765 0.342
2 0.654 0.444 0.874
... ... ...
... ... ...
最后,DataFrame 应该有 280 行和 3 列。
这里有一个小样本可供使用:
proba = {stock: clf[stock].predict_proba(X_test[stock]) for stock in stocks}
proba = {stock: np.delete(proba[stock], 0, axis=1) for stock in stocks}
print(proba)
结果是:
{'MSFT': array([[0.49784439],
[0.51812552],
[0.35948374]]), 'AAPL': array([[0.29038393],
[0.58038393],
[0.52032512]]), 'AMZN': array([[0.64295894],
[0.54295894],
[0.39719920]])}
这些数组应该被转换成一个如下所示的 DataFrame:
MSFT AAPL AMZN
0 0.49784439 0.29038393 0.64295894
1 0.51812552 0.58038393 0.54295894
2 0.35948374 0.52032512 0.39719920
希望编辑使它更清晰一些。
【问题讨论】:
-
您能否仅提供示例输入和输出。您添加的代码 sn-ps 未按预期运行。也许是this 格式的东西。
标签: python arrays dataframe dictionary