遍历多个数据框

时间:2019-08-05 15:37:56

标签: python pandas

我必须重新采样一堆数据帧。我的数据帧简称为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。

1 个答案:

答案 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)