1

I have a dataframe, something like:

|   | a | b                |
|---|---|------------------|
| 0 | a | {'d': 1, 'e': 2} |
| 1 | b | {'d': 3, 'e': 4} |
| 2 | c | NaN              |
| 3 | d | {'f': 5}         |

I am using the following code from df.join(pd.DataFrame.from_records(df['b'].mask(df.b.isna(), {}).tolist())) How can I create column from dictionary keys in same dataframe? and getting result like:

|   | a | b                | d | e | f |
|---|---|------------------|---|---|---|
| 0 | a | {'d': 1, 'e': 2} | 1 | 2 |nan|
| 1 | b | {'d': 3, 'e': 4} | 3 | 4 |nan|
| 2 | c | NaN              |nan|nan|nan|
| 3 | d | {'f': 5}         |nan|nan| 5 |

How can make something like this:

|   | a | b                | b_d | b_e | b_f |
|---|---|------------------|---  |---  |---  |
| 0 | a | {'d': 1, 'e': 2} |  1  |  2  | nan |
| 1 | b | {'d': 3, 'e': 4} |  3  |  4  | nan |
| 2 | c | NaN              | nan | nan | nan |
| 3 | d | {'f': 5}         | nan | nan |  5  |
abhi
  • 337
  • 1
  • 3
  • 12

1 Answers1

1

Use DataFrame.add_prefix:

df.join(pd.DataFrame.from_records(df['b'].mask(df.b.isna(), {}).tolist()).add_prefix('b_'))
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252