繁体   English   中英

覆盖 pandas dataframe 列中的值

[英]overwriting a value in a pandas dataframe column

我有 2 个 dataframe 列,由 True、False 和 NA 值组成,这些值是 str 类型。 我如何将这些 dataframe 列合并在一起以制作另一个 dataframe 列,当 2 个 dataframe 列融合在一起时,该列会使错误值覆盖真实值? 如果列是布尔值,我可以只使用“&”function,但我似乎无法弄清楚,因为值是字符串。

我想把它们加在一起,然后试着用它做点什么。

df["合并"] = df["第 1 列"] + df["第 2 列"]

但我认为我走错了路

您可以为此定义一个 function,然后将其应用于 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)

您可以将TrueFalse字符串值转换为布尔值,将NA字符串值转换为 pandas 可空 boolean 类型

d = {'True': True, 'False': False, 'NA': pd.NA}

df['column 1'] = df['column 1'].map(d).astype('boolean')

然后,您可以使用&执行两列之间的逻辑比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM