So I have a list where each entry looks something like this:
"{'A': 1, 'B': 2, 'C': 3}"
I am trying to get a dataframe that looks like this
A B C 0 1 2 3 1 4 5 6 2 7 8 9
But I’m having trouble converting the format into something that can be read into a DataFrame. I know that pandas should automatically convert dicts into dataframes, but since my list elements are surrounded by quotes, it’s getting confused and giving me
0 0 {'A': 1, 'B': 2, 'C': 3} ...
I’ve tried using using json, concat’ing a list of dataframes, and so on, but to no avail.
Advertisement
Answer
eval
is not safe. Check this comparison
.
Instead use ast.literal_eval
:
Assuming this to be your list:
In [572]: l = ["{'A': 1, 'B': 2, 'C': 3}", "{'A': 4, 'B': 5, 'C': 6}"] In [584]: import ast In [587]: df = pd.DataFrame([ast.literal_eval(i) for i in l]) In [588]: df Out[588]: A B C 0 1 2 3 1 4 5 6