Reputation: 323
I am struggling to get a solution for this. So I have 4 empty DataFrame
df1 = pd.DataFrame()
df2 = pd.DataFrame()
df3 = pd.DataFrame()
df4 = pd.DataFrame()
a list of filenames
filename = ['dog','cat','horse','mouse']
I am looping through every file in the list. For the first file after some calculations, 4 new DataFrame is made
for i in filename:
f = open(f'{i}.json', "r")
f = json.loads(f.read())
#######
some calculations
#######
subdf1
subdf2
subdf3
subdf4
now the main problem I am struggling with is, I have some new calculations to be done on all 4 subdf's with which are all same calculations and append to the empty Dataframe above accordingly. for example calculation like:
i = subdf1.sum()
df1 = df1.append(i)
What I am doing right now is repeating the same calculations for all subdf's like below:
i = subdf1.sum()
df1 = df1.append(i)
i = subdf2.sum()
df2 = df2.append(i)
i = subdf3.sum()
df3 = df3.append(i)
i = subdf4.sum()
df4 = df4.append(i)
Full code of I have been doing till now
df1 = pd.DataFrame()
df2 = pd.DataFrame()
df3 = pd.DataFrame()
df4 = pd.DataFrame()
filename = ['dog','cat','horse','mouse']
for i in filename:
f = open(f'{i}.json', "r")
f = json.loads(f.read())
#######
some calculations
#######
subdf1
subdf2
subdf3
subdf4
i = subdf1.sum()
df1 = df1.append(i)
i = subdf2.sum()
df2 = df2.append(i)
i = subdf3.sum()
df3 = df3.append(i)
i = subdf4.sum()
df4 = df4.append(i)
What I want to achieve is to do the same calculations for all 4 subdf's and append them accordingly to their empty DataFrame. in short I want the last code to make short.
Thanks in advance.
Upvotes: 1
Views: 91
Reputation: 2414
You can insert the 4 empty data frames in a list and then iterate on it inside the for loop. For instance:
df1 = pd.DataFrame()
df2 = pd.DataFrame()
df3 = pd.DataFrame()
df4 = pd.DataFrame()
df_l = [df1, df2, df3, df4]
filename = ['dog','cat','horse','mouse']
for i in filename:
sub_df1 = ...
sub_df2 = ...
sub_df3 = ...
sub_df4 = ...
sub_df_l = [sub_df1,sub_df2,sub_df3, sub_df4]
for i, df in enumerate(df_l):
df_l[i] = df_l[i].append(sub_df_l[i].sum(), ignore_index = True)
Note that also the 4 sub dataframes are inside a list.
Upvotes: 1