引自免费微信小程序:皆我百晓生
根据您提供的运行结果,data_list
是一个字典,其中每个键(如"113595.SH"和"127098.SZ")对应一个DataFrame。在将这样的数据直接转换为一个单一的DataFrame并保存到Excel文件时,出现了错误提示“ValueError: If using all scalar values, you must pass an index”。
要解决这个问题,首先需要将字典中的多个DataFrame合并成一个,并确保它们有合适的索引。这里是一个修复后的代码示例:
def a(ContextInfo):
import pandas as pd
# 获取原始数据并转换为DataFrame格式
data_dict = ContextInfo.get_market_data_ex(
fields=['open', 'high'], stock_code=['113595.SH','127098.SZ'], period='5m'
, start_time='20240207113000', end_time='', count=-1
, dividend_type='follow', fill_data=True
, subscribe=True)
# 将字典中所有DataFrame合并为一个DataFrame
df = pd.concat({k: pd.DataFrame(v).set_index('stime') for k, v in data_dict.items()}, axis=1)
print(df)
# 保存DataFrame到Excel文件
df.to_excel('market_data.xlsx', index=False)
在这个修正后的代码中,我们首先遍历data_dict
,对每个子DataFrame设置其索引为'stime'列。然后使用pd.concat
函数沿着列(axis=1)合并所有DataFrame。
注意:如果sname
列是每一组数据的共同列名,则可以将其用作最终DataFrame的索引,但若不是,则需保留该列并在保存到Excel时加上index=True
。由于原始输出未显示sname
列是否存在,此处假设stime作为唯一的时间索引列。如果stime不是唯一的列且需要作为普通列存在,请不要调用.set_index('stime')
。