Python Forum
Cleaning my code to make it more efficient
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cleaning my code to make it more efficient
#4
I think your approach is all wrong. Instead of testing each column for a filter, you should make a list of filters to apply. Filtering can be done with a compact loop that loops through all the selected filters.

The example below uses a dictionary to map column names with column values.
import pandas as pd
from dataclasses import dataclass
from random import choices


# Make a dataframe for demonstrating filter.
letters = list("ABCDEIOU")
numbers = list(range(1, 10))
mixed = [f"{letter}{number}" for letter in letters for number in numbers]


df = pd.DataFrame(
    {
        "Letters": choices(letters, k=20),
        "Numbers": choices(numbers, k=20),
        "Mixed": choices(mixed, k=20),
    }
)


def filter(frame, filters):
    """Apply filters to dataframe.  filters is a dictionary of column: values pairs."""
    df = frame.copy()
    for key, value in filters.items():
        df = df[df[key].isin(value)]
    return df


print("Numbers = 7", filter(df, {"Numbers": [7]}), sep="\n")
odd_abcs = {"Numbers": [1, 3, 5, 7, 9], "Letters": ["A", "B", "C"]}
print("", "Odd ABC's", filter(df, odd_abcs), sep="\n")
even_vowels = {}
even_vowels["Numbers"] = [2, 4, 6, 8]
even_vowels["Letters"] = ["A", "E", "I", "O", "U"]
print("", "Even Vowels", filter(df, even_vowels), sep="\n")
BSDevo likes this post
Reply


Messages In This Thread
RE: Cleaning my code to make it more efficient - by deanhystad - Sep-26-2023, 08:06 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  hi need help to make this code work correctly atulkul1985 5 892 Nov-20-2023, 04:38 PM
Last Post: deanhystad
  newbie question - can't make code work tronic72 2 750 Oct-22-2023, 09:08 PM
Last Post: tronic72
  A more efficient code titanif 2 529 Oct-17-2023, 02:07 PM
Last Post: deanhystad
  how to make bot that sends instagram auto password reset code kraixx 2 1,472 Mar-04-2023, 09:59 PM
Last Post: jefsummers
  Make code non-blocking? Extra 0 1,187 Dec-03-2022, 10:07 PM
Last Post: Extra
  Making a function more efficient CatorCanulis 9 1,985 Oct-06-2022, 07:47 AM
Last Post: DPaul
  Apply textual data cleaning to several CSV files ErcoleL99 0 878 Jul-09-2022, 03:01 PM
Last Post: ErcoleL99
  Make the code shorter quest 2 1,570 Mar-14-2022, 04:28 PM
Last Post: deanhystad
  How would you (as an python expert) make this code more efficient/simple coder_sw99 3 1,863 Feb-21-2022, 10:52 AM
Last Post: Gribouillis
  Pyspark - my code works but I want to make it better Kevin 1 1,850 Dec-01-2021, 05:04 AM
Last Post: Kevin

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020