Reputation: 267
I have a list like this:
network = ['facebook','organic',instagram']
And I create 3 dataframes: facebook_count, organic_count, instagram_count that each type of network.
facebook_count = df[df.isin(['facebook installs'])]
organic_count = df[df.isin(['organic installs'])]
instagram_count = df[df.isin(['instagram installs'])]
so is there a way that write a iteration that create these 3 dataframes at once? I write something like this:
for i in range(len(network)+1):
network[i]+'_count' = df[df.isin([network[i]+' installs'])]
But it returns a SyntaxError: can't assign to operator
Upvotes: 1
Views: 3144
Reputation: 71610
The most efficient solution would be to create a dictionary storing the dataframes:
d = {i + '_count': df[df.isin([i + ' installs'])] for i in network}
And to get a dataframe, do:
print(d['facebook_count'])
Output will be the facebook_count
dataframe with expected values
Upvotes: 4
Reputation: 587
An easy fix is to use dictionary
count = {} # creating a new dictionary
for i in range(len(network)+1):
count[network[i]+'_count'] = df[df.isin([network[i]+' installs'])]
This way, you are using the name facebook_count
,organic_count
and instagram_count
as keys of the dictionary
i.e. count['facebook_count'] = df[df.isin('facebook installs'])]
Upvotes: 1