Python: Generate new dfs from a list of dataframes using for loop
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-02-2022 06:43 AM
I have a list of dataframes (for this example 2) and want to apply a for-loop to the list of frames to generate 2 new dataframes.
To start, here is my starting dataframe called df_final:
First, I create 2 dataframes: df2_b2c_fast, df2_b2b_fast:
for x in df_final['b2b_b2c_prod'].unique():
locals()['df2_' + x ] = df_final[(df_final['b2b_b2c_prod'] == x ) ]
Second I calculate the correlation between ADV and pkg_yld:
df_corrs_fast_b2c=df2_b2c_fast.groupby(['bus_nm','id']).corr(method='spearman').unstack().iloc[:,1]
df_corrs_fast_b2b=df2_b2b_fast.groupby(['bus_nm','id']).corr(method='spearman').unstack().iloc[:,1]
Third I convert each to dataframes:
corrs_b2b_fast = (df2_b2b_fast[['adv', 'id']]
.groupby('id')
.corrwith(df1['pkg_yld'])
.rename(columns={'adv' : 'correl'})
.reset_index())
corrs_b2c_fast = (df2_b2c_fast[['adv', 'id']]
.groupby('id')
.corrwith(df1['pkg_yld'])
.rename(columns={'adv' : 'correl'})
.reset_index())
Here is one of the 2 dataframes corrs_b2c_fast:
Question: I want to consolidate the steps where (1) I extract my 2 dataframes, (2) estimate the correlations and (3) convert to 2 dataframes using a for loop (corrs_b2b_fast, corrs_b2c_fast); I started below but got stuck:
df_list=[df2_b2b_fast, df2_b2c_fast] # Subset of dfs
for x in df_list['b2b_b2c_prod']:
locals()['corrs_' + x ] = df_list[(df_list['b2b_b2c_prod'] == x ) ] # Create new 2 dfs from main df 'b2b_b2c_prod'
x= x.groupby(['bus_nm','id']).corr(method='spearman').unstack().iloc[:,1] # calculate corr between pkg_yld and ADV
# stuck here...lines needed to create dataframes corrs_b2b_fast, corrs_b2c_fast??
What's wrong?
- Labels:
-
Dataframes
-
Python
-
Simple Terms
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2022 01:44 AM
thanks
![](/skins/images/8C2A30E5B696B676846234E4B14F2C7B/responsive_peak/images/icon_anonymous_message.png)
![](/skins/images/8C2A30E5B696B676846234E4B14F2C7B/responsive_peak/images/icon_anonymous_message.png)