我试图仅使用合并在一行中的apply和map来代替将数据框的多个列中的二进制值分别替换为0和1,而是出于学习目的而创建函数。
我的数据框
col1 col2 col3
0 No Yes No
1 Yes No No
2 Yes Yes Yes
3 No No No
4 Yes Yes Yes
不工作代码
bin_list = ['col1','col2','col3']
test[bin_list] = test[bin_list].apply(map({'Yes':1, 'No':0}))
工作代码
def binary_map(x):
return x.map({'Yes': 1, "No": 0})
test[bin_list].apply(binary_map)
同时运行两个代码后的期望
col1 col2 col3
0 0 1 0
1 1 0 0
2 1 1 1
3 0 0 0
4 1 1 1
实际输出
bin_list = ['col1','col2','col3']
test[bin_list] = test[bin_list].apply(map({'Yes':1, 'No':0}))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-82-f54f82a785aa> in <module>
1 bin_list = ['col1','col2','col3']
----> 2 test[bin_list] = test[bin_list].apply(map({'Yes':1, 'No':0}))
TypeError: map() must have at least two arguments.