所以我有一个类似于以下
的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
,但似乎都没有效果。
答案 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))