我如何在Python中将局部变量名称用作全局变量名称的一部分

时间:2019-06-24 17:13:37

标签: python for-loop global local

我有一个字典,其中包含包含数据框的字典

dict
key value
s0   sub_dict1
s1   sub_dict2

sub_dict1
key value
x1  df1
x2  df2


df1
time val other_data_i_don't_want
0:01  1       999
0:34  2       999

我最终想要的是一个包含数据框作为值的字典

dict_new
key value
s0  df

其中df

time val_x1 val_x2 val_x3 
0:01   1         1       1 

我想在for循环中自动执行此过程

到目前为止,我已经完成:

for key1 in dict.keys():
 for key2 in dict[key1].keys():
 global key1_key2
 sensor = str(key2)
 key1_key2 = dict[key1][key2][['time','val']]
 key1_key2.rename(columns = {"val":'val_'+key2})

但是key1_key2被定义为具有名称“ key1_key2”,但是我实际上想创建多个名为“ s0_x1”,“ s0_x2”,“ s1_x1”,“ s1_x2”的数据框。

,重命名语句也不起作用。

一旦我有了“ s0_x1”,就可以进行完全外部联接以创建所需的df。我只是不知道如何在一开始将它们定义为全局变量

1 个答案:

答案 0 :(得分:0)

您可以创建一个dict而不是全局变量吗?像

dataframes = {}
for sN, sub_dictN in dict.items():
  for xN, dfN in sub_dictN.items():
    current_dataframe = '{}_{}'.format(sN, xN)
    dataframes[current_dataframe] = {}  # instead of global
    # fill the dataframe with data as you like