附加到存储在dataframe中的字典值

时间:2016-10-20 17:19:35

标签: python python-2.7 pandas

所以我有一个类似于以下

的DataFrame
   a   b   c  
0  AB  10  {a: 2, b: 1}
1  AB  1   {a: 3, b: 2}
2  AC  2   {a: 4, b: 3}
...   
400 BC 4   {a: 1, b: 4}

给定{c: 2}之类的另一个密钥对,将其添加到行c中的每个值的语法是什么?

   a   b   c  
0  AB  10  {a: 2, b: 1, c: 2}
1  AB  1   {a: 3, b: 2, c: 2}
2  AC  2   {a: 4, b: 3, c: 2}
...   
400 BC 4   {a: 1, b: 4, c: 2}

我已尝试df['C'] +=, and df['C'].append()df.C.append,但似乎都没有效果。

1 个答案:

答案 0 :(得分:2)

以下是使用另一个字典更新列中字典的通用方法,该字典可用于多个键。

测试数据框:

>>> x = pd.Series([{'a':2,'b':1}])
>>> df = pd.DataFrame(x, columns=['c'])
>>> df
                  c
0  {'b': 1, 'a': 2}

只有apply一个lambda函数:

>>> update_dict = {'c': 2}
>>> df['c'].apply(lambda x: {**x, **update_dict})
0    {'b': 1, 'a': 2, 'c': 2}
Name: c, dtype: object

注意:这使用了How to merge two Python dictionaries in a single expression?答案中提到的Python3更新字典语法。对于Python2,您可以在顶部答案中使用merge_two_dicts函数。您可以使用该答案中的函数定义,然后编写:

df['c'].apply(lambda x: merge_two_dicts(x, update_dict))