在Python中从请求的数据集创建和导出数据框架



我有一个.xlsx文件,其中包含5列和4500行数据。标题为"符号"的列。很有趣。对于这个问题,我创建了一个列,其中包含来自"符号"的五个单元格值。列。目前,我可以请求显示列中每个单元格值在不同时期内股票价格变化的数据。

tbody> <<tr>
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.applypandas.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")