我有一个包含四列id1
,id2
,config_type
,call_frequency
的数据框,但是id1
和id2
却没有非常重要。
我需要用条件与另一列匹配的特定字符串替换call_frequency
列的值。
输入:
输出:
基本上,当call_frequency
匹配时,我需要替换相应的config_types
列中的值。
{'type2':'string2', 'type3':'string3', 'type4':'string4'}
,不匹配的值应保持不变。
我尝试过:
df[df.config_type == 'dict_key', 'column'] = 'dict_value'
但这给了我错误。
TypeError:“系列”对象是可变的,因此不能进行散列处理
有什么解决方法吗?
答案 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