使用python / pandas中的apply + map将二进制值替换为多列中的数字

时间:2019-07-19 16:18:06

标签: python pandas dictionary apply

我试图仅使用合并在一行中的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.

0 个答案:

没有答案