我有一个.xlsx文件,其中包含5列和4500行数据。标题为"符号"的列。很有趣。对于这个问题,我创建了一个列,其中包含来自"符号"的五个单元格值。列。目前,我可以请求显示列中每个单元格值在不同时期内股票价格变化的数据。
Symbols | apple |
---|
amazon |
厂商 |
microsoft |
改良 |
我希望列表中的数据为
data = [
[{'symbol': 'AAPL', '1D': 1.15, '5D': 3.09, '1M': 15.46, '3M': -9.03, '6M': -11.56, 'ytd': -17.49, '1Y': 1.14, '3Y': 192.73, '5Y': 301.63, '10Y': 592.67, 'max': 115415.38}],
[{'symbol': 'AMZN', '1D': 2.64, '5D': -0.46, '1M': 9.54, '3M': -25.68, '6M': -28.55, 'ytd': -33.36, '1Y': -37.46, '3Y': 12.37, '5Y': 124.85, '10Y': 951.39, 'max': 113450.0}],
[{'symbol': 'TSLA', '1D': 0.74, '5D': -4.77, '1M': 12.65, '3M': -28.29, '6M': -30.11, 'ytd': -39.97, '1Y': 10.7, '3Y': 1320.51, '5Y': 1026.9, '10Y': 9916.69, 'max': 14966.95}],
[{'symbol': 'MSFT', '1D': 1.04, '5D': -3.36, '1M': 4.8, '3M': -8.48, '6M': -15.18, 'ytd': -23.31, '1Y': -8.65, '3Y': 84.82, '5Y': 249.99, '10Y': 772.01, 'max': 256620.0}],
[{'symbol': 'NVDA', '1D': 2.54, '5D': 1.52, '1M': 1.03, '3M': -27.64, '6M': -39.14, 'ytd': -47.660000000000004, '1Y': -16.85, '3Y': 278.62, '5Y': 288.04, '10Y': 5353.98, 'max': 41378.95}],
]
df = pd.DataFrame(data, columns = ['data'])
一旦列表中的值被读取为数据帧中的字典,我们可以使用pandas.Series.apply
或pandas.json_normalize
将获得的字典转换为列
df = pd.concat([df, df.pop('data').apply(pd.Series)], axis = 1)
这给了我们期望的输出:
symbol 1D 5D 1M 3M ... 1Y 3Y 5Y 10Y max
0 AAPL 1.15 3.09 15.46 -9.03 ... 1.14 192.73 301.63 592.67 115415.38
1 AMZN 2.64 -0.46 9.54 -25.68 ... -37.46 12.37 124.85 951.39 113450.00
2 TSLA 0.74 -4.77 12.65 -28.29 ... 10.70 1320.51 1026.90 9916.69 14966.95
3 MSFT 1.04 -3.36 4.80 -8.48 ... -8.65 84.82 249.99 772.01 256620.00
4 NVDA 2.54 1.52 1.03 -27.64 ... -16.85 278.62 288.04 5353.98 41378.95
[5 rows x 12 columns]
现在可以将数据写入xlsx文件
df.to_excel("allstockdata.xlsx")