我必须重新采样一堆数据帧。我的数据帧简称为df_1,df_2等(我大约有50个)。 这样,我可以轻松地分别对每个采样进行重新采样:
df_out_1 = resample(df_1, replace=False, n_samples=50, random_state=11)
df_out_2 = resample(df_2, replace=False, n_samples=50, random_state=11)
....
它可以工作,但是编写50行几乎相同的代码并不是很聪明。所以我尝试了一个循环:
df_list=[('df_'+str(i),'df_out_'+str(i)) for i in range(1,52)]
for (df,df_out) in df_list:
# Downsample majority class
df_out = resample(df, replace=False, n_samples=50, random_state=11)
这不起作用,因为对于python,循环中的df和df_out不是数据帧而是字符串。我不知道该如何治愈。 :(
谢谢,D。
答案 0 :(得分:1)
使用globals()[string]
引用字符串中命名的变量
完整代码:
df_list=[('df_'+str(i),'df_out_'+str(i)) for i in range(1,52)]
for (df_str,df_out_str) in df_list:
df = globals()[df_str]
df_out = globals()[df_out_str]
# Downsample majority class
df_out = resample(df, replace=False, n_samples=50, random_state=11)