如何更新另一列值与特定值匹配的一列行的值?

时间:2019-08-14 18:21:44

标签: python pandas dataframe series

我有一个包含四列id1id2config_typecall_frequency的数据框,但是id1id2却没有非常重要。

我需要用条件与另一列匹配的特定字符串替换call_frequency列的值。

输入:

enter image description here

输出:

![enter image description here

基本上,当call_frequency匹配时,我需要替换相应的config_types列中的值。

{'type2':'string2', 'type3':'string3', 'type4':'string4'}

,不匹配的值应保持不变。

我尝试过:

df[df.config_type == 'dict_key', 'column'] = 'dict_value'

但这给了我错误。

  

TypeError:“系列”对象是可变的,因此不能进行散列处理

有什么解决方法吗?

2 个答案:

答案 0 :(得分:2)

使用numpy.where的替代方法:

import numpy as np

d = {'type2':'string2', 'type3':'string3', 'type4':'string4'}
df["call_frequency"]=np.where(df['config_type'].isin(d), df['config_type'].replace(d), df['call_frequency'])

答案 1 :(得分:1)

  • 使用loc
d = {'type2':'string2', 'type3':'string3', 'type4':'string4'}
for k,v in d.items():
    df.loc[df.config_type==k, 'call_frequency'] = v