2

I am trying to create a dataframe from a list of values which has nested dictionaries So this is my data

 d=[{'user': 200,
 'p_val': {'a': 10, 'b': 200},
 'f_val': {'a': 20, 'b': 300},
 'life': 8},
  {'user': 202,
 'p_val': {'a': 100, 'b': 200},
 'f_val': {'a': 200, 'b': 300},
 'life': 8}]

i am trying to turn it into a dataframe as follows:

user new_col f_val   p_val life
200   a        20     10    8
200   b        300    200   8
202   a        200    100   8
202   b        300    200   8

I looked at other answers, none of them matched my requirement. The nearest I could find was this, and still did not work me. Any help would be much appreciated! Thank you

Kanchana Gore
  • 41
  • 1
  • 2

1 Answers1

2

Try

df = pd.concat([pd.DataFrame(e) for e in d])
df.reset_index().rename(columns={'index': 'newcol'})

newcol  user    p_val   f_val   life
0   a   200 10  20  8
1   b   200 200 300 8
2   a   202 100 200 8
3   b   202 200 300 8

The first line makes a DataFrame with the index being the a and b values. The second line makes this the newcol column.

Ami Tavory
  • 74,578
  • 11
  • 141
  • 185