【问题标题】:How do I used a local variable name as part of a global variable name in python如何在 python 中使用局部变量名作为全局变量名的一部分
【发布时间】:2019-11-06 12:46:56
【问题描述】:

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

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。我只是不知道如何在第一个实例中将这些定义为全局变量

【问题讨论】:

  • 如果可能的话,我会尽量避免定义这样的全局变量。 stackoverflow.com/a/5036775/7619380
  • 我想创建多个变量,以便将它们合并在一起。我发现的唯一关于合并字典的东西会覆盖信息,但我想要一个完整的外部连接。

标签: python for-loop global local


【解决方案1】:

代替全局变量,你可以创建一个字典的字典吗?类似的东西

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多