熊猫:根据现有列中的值创建新列

时间:2020-05-01 21:54:48

标签: python pandas

我有一个熊猫数据框,其中有两列,如下所示:

A      B
Yes    No
Yes    Yes
No     Yes
No     No
NA     Yes
NA     NA

我想基于这些值创建一个新列,以便如果任何列值是Yes,则新列中的值也应该是Yes。如果两个列的值均为No,则新列的值也为No。最后,如果两个列的值均为NA,则新列的输出也将具有NA。以上数据的示例输出为:

C
Yes
Yes
Yes
No
Yes
NA

我在数据帧的长度上编写了一个循环,然后检查每个值以获取新列。但是,要保存1000万条记录要花费很长时间。有没有更快的pythonic方法来实现这一目标?

3 个答案:

答案 0 :(得分:7)

类似

df.fillna('').max(axis=1)
Out[106]: 
0    Yes
1    Yes
2    Yes
3     No
4    Yes
5       
dtype: object

答案 1 :(得分:2)

尝试:

(df == 'Yes').eval('A | B').astype(str).mask(df['A'].isna() & df['B'].isna())

答案 2 :(得分:0)

另一种方式。虽然很硬

window.onscroll = changeOpNavbar

function changeOpNavbar() {
    if(window.scrollY > 280){
        document.querySelector('#navbar-custom').style.background = 'rgba(0, 0, 0, 0.9)';
    }
    else{
        document.querySelector('#navbar-custom').style.background = 'rgba(0, 0, 0, 0.1)';
    }
}

enter image description here