首页 > 解决方案 > 将字典拆分为现有列

问题描述

假设我有数据框pd.DataFrame({'a':nan, 'b':nan, 'c':{'a':1, 'b':2},{'a':4, 'b':7, 'c':nan}, {'a':nan, 'b':nan, 'c':{'a':6, 'b':7}})。我想从列中字典中的键中获取值c并将它们解析为键ab.

预期输出为:

   a                   b                  c
0  1                   2      {'a':1, 'b':2}
1  4                   7                 nan
2  6                   7      {'a':6, 'b':7}

我知道如何创建新列,但这不是我需要的任务,因为a并且b有相关信息需要从c. 我无法找到与此任务相关的任何内容。

任何有关有效方法的建议都将受到欢迎。

** 编辑 **

真正的问题是我有以下数据框,我将其简化为上述数据框(毫无疑问,在几个无关的步骤中):

a                      b          c
0  nan                 nan        [{'a':1, 'b':2}, {'a':6, 'b':7}] 
1  4                   7          nan

我需要按照尽可能少的步骤输出

   a                 b        c
0  1                 2        {'a':1, 'b':2} 
1  4                 7        nan
2  6                 7        {'a':6, 'b':7}  

谢谢!

标签: pythonpandasparsingdictionary

解决方案


这有效:

def func(x):
    d = eval(x['c'])
    x['a'] = d['a']
    x['b'] = d['b']
    return x


df = df.apply(lambda x : func(x), axis=1)

推荐阅读