Python 在值上追加到存储在dataframe中的字典

Python 在值上追加到存储在dataframe中的字典,python,python-2.7,pandas,Python,Python 2.7,Pandas,因此,我有一个数据帧,如下所示 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

因此,我有一个数据帧,如下所示

   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']+=、df['C'].append()
df.C.append
,但两种方法都不起作用。

这里有一种通用方法,可以用另一个字典更新列中的字典,它可以用于多个键

测试数据帧:

>>> x = pd.Series([{'a':2,'b':1}])
>>> df = pd.DataFrame(x, columns=['c'])
>>> df
                  c
0  {'b': 1, 'a': 2}
只需
应用
一个lambda函数:

>>> update_dict = {'c': 2}
>>> df['c'].apply(lambda x: {**x, **update_dict})
0    {'b': 1, 'a': 2, 'c': 2}
Name: c, dtype: object
注意:这使用了在对的回答中提到的Python3更新字典语法。对于Python2,您可以使用顶部答案中的
merge\u two\u dicts
函数。您可以使用该答案中的函数定义,然后编写:

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

df['C'].update(C=2)
这返回了一个类型错误,因为字典中还不存在“C”。
df['C']=df.C.apply(lambda x:dict(x,C=2))
?请注意,您的词典的顺序可能会改变。嗯,这给了我语法错误:在**x部分无效语法您是否使用Python2?是的,我想我忘了在主要帖子中提到这一点。使用Python2解决方案编辑。