qwer1234
qwer1234

Reputation: 267

use elements in a list for dataframe names

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

Answers (2)

U13-Forward
U13-Forward

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

lrh09
lrh09

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

Related Questions