首页 > 解决方案 > 如何从同一数据框中的字典键创建具有键名的列?

问题描述

我有一个数据框,例如:

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

我正在使用df.join(pd.DataFrame.from_records(df['b'].mask(df.b.isna(), {}).tolist())) 如何从同一数据框中的字典键创建列中的以下代码?并得到如下结果:

|   | 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 |

怎么能做出这样的事情:

|   | 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  |

标签: pythonpandas

解决方案


使用DataFrame.add_prefix

df.join(pd.DataFrame.from_records(df['b'].mask(df.b.isna(), {}).tolist()).add_prefix('b_'))

推荐阅读