我有多个词典,这些词典基于相同的14组数据进行不同的度量/计算。每个字典具有相同的键集,由
定义group_list =['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
在此之前,我已经基于计算和操作其他字典+列表中的数据创建了字典。有问题的字典是
speed_dict
output_dict
output2_dict
这些是在for循环之外创建的,然后进行填充以提供类似于以下内容的输出
speed_dict = {'A': [list of speeds for A], 'B': [list of speeds for B]... etc for letters up to 'N':[list of speeds for N]}
output_dict = {'A': [output of function for A], 'B':[output of function for B].... 'N':[output of function for N]}
output2_dict = {'A':[output of func for A squared]....}
我确定你知道图片。每个字典中每个值/列表的长度为8个项目。
我正在寻找一种方法,可以为从A到N的每组数据创建14个单独的数据帧,每列包含一个不同的数据集(我已经设法仅针对最后一组数据正确地产生了我想要的结果{ {3}}(速度称为速度,输出为升力系数),使用以下代码:
group_list = ['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
speed_dict = {}
output_dict = {}
output_dict = {}
cl_dataframe = []
for i in range(0, len(group_list)):
speed_dict.update({group_list[i]: constant*some_dict.get(group_list[i])})
output_dict.update({group_list[i]: some_func(speed_dict.get(group_list[i]))})
output2_dict.update({group_list[i]: (output_dict.get(group_list[i]))**2})
output_dataframe.append({"Equivalent Velocity": list(speed_dict.get(group_list[i])),
"Lift Coefficient": list(output_dict.get(group_list[i])),
"Lift Coefficient Squared": list(output_dict.get(group_list[i]))})
pd.DataFrame(output_dataframe[i], columns=["Equivalent Velocity", "Lift Coefficient", "Lift Coefficient Squared"])
在最后一行,如果我拿走[i]而不是使用
pd.DataFrame(output_dataframe, columns=["Equivalent Velocity", "Lift Coefficient", "Lift Coefficient Squared"])
the last set of data only。如果我保留[i]并使行缩进,以使此过程发生在for循环内,则我不会从Python收到任何输出,也不会收到错误和表格。有没有一种方法可以创建14个单独的数据框,每个键/字母对应一个数据框,类似于I instead get this output上方提交的代码的数据框输出,其中每一列都是一个单独的字典? 谢谢
编辑:改写整个问题
答案 0 :(得分:0)
group_list = ['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
# dummy data
speed_dict = {a: np.random.randint(0,10,10) for a in group_list}
output_dict = {a: np.random.randint(0,10,10) for a in group_list}
output2_dict = {a: np.random.randint(0,10,10) for a in group_list}
# convert dict to dataframes
dataframes = [pd.DataFrame(d) for d in [speed_dict, output_dict, output2_dict]]
# extract respective column from all dataframes and combine in individual df
single_dataframes = [pd.concat([d[column] for d in dataframes], axis=1) for column in group_list]
#rename columns
for sdf in single_dataframes:
sdf.columns=['Equivalent Velocity','Lift Coefficient', 'Lift Coefficient Squared']