如何创建以Track值为键的DataFrame字典并通过键值取回对应DataFrame
将列表存储改为字典键值对存储
我现在运行着这样的for循环:
tracks = [1010, 2020] df_list = [] for i in tracks: query = ''' quer_here ''' df = pd.read_sql(query, con=con) to_dict = df.to_dict() df_list.append(to_dict)
这段代码会执行SQL查询,把结果转为pandas DataFrame,再转成字典存入列表。现在我可以通过pd.DataFrame(df_list[0])取回对应的DataFrame,但我想改成用循环里的i值作为键来存储每个字典,这样就能通过pd.DataFrame(df_dict[1010])或者pd.DataFrame(df_dict[2020])来取回DataFrame,请问该怎么实现?
实现方法
只需要把原来的列表df_list替换成字典df_dict,在循环中直接将i作为键、DataFrame转成的字典作为值存入即可:
基础修改版
tracks = [1010, 2020] df_dict = {} # 初始化空字典替代列表 for i in tracks: query = ''' quer_here ''' df = pd.read_sql(query, con=con) to_dict = df.to_dict() df_dict[i] = to_dict # 以tracks中的元素为键,存入对应字典
修改完成后,你就能通过pd.DataFrame(df_dict[1010])或pd.DataFrame(df_dict[2020])直接获取对应ID的DataFrame。
简洁写法:字典推导式
如果想让代码更紧凑,也可以用Python的字典推导式一行完成,逻辑和上面的循环完全一致:
tracks = [1010, 2020] df_dict = {i: pd.read_sql(''' quer_here ''', con=con).to_dict() for i in tracks}
内容的提问来源于stack exchange,提问作者datashout
相关产品推荐
相关产品推荐

