Search code examples
pythoncsvdictionarytranslate

Applying python dictionary to column of a CSV file


I have a CSV file that includes one column data that is not user friendly. I need to translate that data into something that makes sense. Simple find/replace seems bulky since there are dozens if not hundreds of different possible combinations I want to translate.

For instance: BLK = Black or MNT TP = Mountain Top

There are dozens if not hundreds of translations possible - I have lots of them already in a CSV table. The problem is how to use that dictionary to change the values in another CSV table. It is also important to note that this will (eventually) need to run on its own every few minutes - not just a one time translation.


Solution

  • It would be nice if you could describe in more detail what's the data you're working on. I'll do my best guess though.

    Let's say you have a CSV file, you use pandas to read it into a data frame named df, and the "not user friendly" column named col. To replace all the value in column col, first, you need a dictionary containing all the keys (original texts) and values (new texts):

    my_dict = {"BLK": "Black", "MNT TP": Mountain Top,...}
    

    Then, map the dictionary to the column:

    df["col"] = df["col"].map(lambda x: my_dict.get(x, x))
    

    If a key appears in the dictionary, it will be replaced by the new corresponding value in the dictionary, otherwise, it keeps the original value.