使用for循环遍历数据帧

时间:2019-07-15 14:21:24

标签: python pandas dataframe

由于性能,我不得不将数据分成几个数据帧。每帧有300列和800.000行。

数据帧被命名为df0,df1 ... df29。

我是这样创建它们的:

for j in range (0,30):
    globals()['df' + str(j)] = pd.read_parquet('C:\\Users\\helle\\Documents\\Jenny_Analytics\\train.parquet', columns=chunks[j])

现在,我要检查所有数据帧的数据质量,并且要执行以下操作:

df_describeAll = pd.DataFrame(columns=["Dataframe","Count"])
df_describeAll.head()

for j in range (0,29):
   cnt=df{j}.count()

    for i in range (0,cnt.size):
         if cnt[i] <800000:
              df_describeAll["Dataframe"]='df' + str(j)
              df_describeAll["Count"]=df.count()

我当前的问题是cnt=df{j}.count(),我也尝试过['df' + str(j)].count(),但它从未将变量识别为数据帧。如果我尝试使用df0.count()df10.count(),它将返回预期的序列。

所以我要做的是遍历所有数据帧,并在列数低于800.000时将它们放入我的df_describeAll中。

我认为我正在滥用全局变量,我将非常感谢您的帮助!预先感谢

1 个答案:

答案 0 :(得分:0)

只需将它们加载到列表中,然后按索引对其进行访问:

dfs = [pd.read_parquet('C:\\Users\\helle\\Documents\\Jenny_Analytics\\train.parquet', columns=chunks[j]) for j in range (0,30)]

for j in range(0,29):
    cnt = dfs[j].count()
    ...