python - 从数组字典创建 DataFrame
问题描述
我对 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
希望编辑使它更清晰一些。
解决方案
# Convert list of lists into list
for key in res.keys():
res[key] = [x for sublist in res[key] for x in sublist]
# Read dictionary into DataFrame
df = pd.DataFrame.from_dict(res)
您必须先将列表列表转换为单个列表,然后再将其转换为 DataFrame。
推荐阅读
- mongodb - #MongoSocketException #JaversBuildException
- javascript - 中断递归函数
- ios - 无法在相机胶卷 Swift 5 中检索视频的 URL
- python - 如何以自定义 json 格式返回数据?
- amazon-s3 - 确保仅在创建目标存储桶后才执行通过 aws cli 脚本启动的 PutBucketWebsite 操作
- php - MySQL拆分逗号分隔值和GROUP BY结果
- mysql - 在 Wordpress 中查询 mysql 替换
- xml - XSL | 自闭标签的转换
- ruby-on-rails - Rails rspec 和 cucumber Secret 令牌为空
- javascript - 如何将列表从ajax传递到控制器