我有数据框 -
df = pd.DataFrame({'colA':['a', 'a', 'a', 'b' ,'b'], 'colB':['a', 'b', 'a', 'c', 'b'], 'colC':['x', 'x', 'y', 'y', 'y']})
我想编写一个函数来用该列中的频率计数替换每个值。例如 colA 现在将是[3, 3, 3, 2, 2]
我试图通过创建一个包含值和频率计数的字典来做到这一点,将该字典分配给一个变量freq
,然后将列值映射到freq
. 我写了以下函数
def LabelEncode_method1(col):
freq = col.value_counts().to_dict()
col = col.map(freq)
return col.head()```
当我运行以下命令 LabelEncode_method1(df.colA)
时,我得到了结果3, 3, 3, 2, 2
。但是,当我调用 dataframedf
时,值colA
仍然是'a', 'a', 'a', 'b', 'b'
- 我究竟做错了什么。如何修复我的功能?
- 如何编写另一个循环遍历所有列并将值映射到
freq
的函数,而不是为每列调用函数 3 次。