我有两个dataframe列,由True、False和NA值组成,这些值都是str类型。当两个数据框列融合在一起时,我如何将这些数据框列合并在一起,以使另一个数据框列使false值覆盖真值?如果列是bool,我可以只使用"&“函数,但我似乎无法理解它,因为值是字符串。
我在考虑把它们加在一起,然后试着用它做点什么。
df"merged“= df"column 1”+ df"column 2“
但我想我走错了路
发布于 2021-04-29 20:51:27
您可以为此定义一个函数,然后将其应用于整个DataFrame,我的第一个条件意味着,如果列中的值相同,则保留第三列中的值,假设您希望'NA‘保持相同。第二和第三个条件是,当另一列具有"NA“值时,选择"True”或"False“。对于所有其他情况,返回"False",也就是说,如果一列有"True“值,另一列有"False",这应该是可行的:
def and_func(x):
if x["column 1"] == x["column 2"]:
return x["column 1"]
elif ((x["column 1"] == 'NA') & (x["column 2"] != 'NA')):
return x["column 2"]
elif ((x["column 2"] == 'NA') & (x["column 1"] != 'NA')):
return x["column 1"]
else:
return "False"
df["merged"] = df.apply(lambda x: and_func(x), axis = 1)
发布于 2021-04-29 22:19:59
您可以使用以下命令将True
和False
字符串值转换为布尔值,并将NA
字符串值转换为pandas nullable boolean type:
d = {'True': True, 'False': False, 'NA': pd.NA}
df['column 1'] = df['column 1'].map(d).astype('boolean')
然后,您可以使用&
在两列之间执行逻辑比较。
https://stackoverflow.com/questions/67324733
复制相似问题