【发布时间】:2019-12-06 11:00:54
【问题描述】:
我正在使用 for 循环来读取多个 csv 文件并创建数据帧。我也想在 for 循环之外访问这些数据帧。为此我也使用了Global 关键字,但它不起作用。
for file in os.listdir('C:\\Users\\ABCDE\\Desktop\\Measurement'):
if file.endswith('.csv'):
print(file)
name = file[3:6]
global df_name # this is the line
df_name = 'df' + name
print(df_name)
df_name = pd.read_csv('C:\\Users\\ABCDE\\Desktop\\Measurement\\' + str(file),low_memory = False)
df_name.rename(columns={0:'values'},
inplace=True)
g = df_name.level_1.str[-2:] # Extracting column names
df_name['lvl'] = df_name.level_1.apply(lambda x: int(''.join(filter(str.isdigit, x))))
正如您在上面看到的,我也想在 for 循环之外访问这些数据帧(df_name(3 个数据帧,因为我有 3 个文件)
如何使用 Global 关键字使这些数据帧在 for 循环之外可访问?
【问题讨论】:
-
你的 for 循环是否在另一个函数中?如果不是,您甚至不需要使用
global。您可以在循环之前定义一个变量,然后在循环中对其进行修改。 -
@BerkayÖz - 我正在从一个目录中读取所有文件。所以,我的目标是为每个数据框设置唯一的变量名。不同文件的数据框名称不同。每个文件都有不同的 datframe 名称。那么在这种情况下,我还应该在外面声明一个变量吗?是推荐的吗?
-
您在一行中尝试了 2 个操作,这就是它给出错误的原因。而且这不是推荐,您可以在范围之外定义。
-
@AVLES 在这种情况下,您应该声明一个 list 或 dictionary。在循环中创建一个局部变量,将该局部变量用于数据框,然后将该变量添加到您的列表或字典中。
-
@AVLES 正如我之前提到的,您不需要为每个文件创建变量。也不建议这样做,也不是一个好习惯。只需将它们添加到列表或字典中,然后从那里访问它们。
标签: python python-3.x for-loop global-variables global