如何将任何列中的所有“False”值替换为其他同名列中的值(如果这些值不是False)

laawzig2  于 2022-10-23  发布在  其他
关注(0)|答案(1)|浏览(177)

例如:

import pandas as pd

dc1 = {
    'n':[1, 2, 3, 4],
    'a':[0, 2, 0.0, 4],
    'b':[0,'', False, 5],
    }

dc2 = {
    'n':[1, 2, 3, 4],
    'a':[1, 0, 3, 0.0],
    'b':[6, 5, 8, 9],
    }

在**'n'列上合并。如果df1中的'a'(和'b')的值为False**(或我们可以手动设置的某些值**[False,0,0.0,'Nan',None,','Null']),那么df1*中的'a'(以及'b',列中的值是否会被df2中的'a'**(以及'b')列的值替换,然后删除后缀为_drop的列?
结果(例如dict)必须是:

dc_result = {
    'n':[1, 2, 3, 4],
    'a':[1, 2, 3, 4],
    'b':[6, 5, 8, 5],
    }
r3i60tvu

r3i60tvu1#

可以使用isin获取ab中的单元格包含手动列表中元素的索引:[False, 0, 0.0, 'Nan', None, '','Null'],然后使用m1n 4o1p替换这些元素:

replace_list = [False, 0, 0.0, 'Nan', None, '','Null']
df1[['a', 'b']] = ( np.where(df1[['a', 'b']].isin(replace_list), df2[['a', 'b']], 
                                                   df1[['a', 'b']]).astype(int) )

相关问题