import ast import pandas as pd def read_csv_and_eval(path: str, *args, **kwargs) -> pd.DataFrame: df = pd.read_csv(path, *args, **kwargs) df = df.applymap(eval_but_leave_string_if_you_cant) return df def eval_but_leave_string_if_you_cant(text: str): try: out = ast.literal_eval(text) except: out = text return out