Panda中的逻辑应用的功能与预期不同



我有一个数据帧,在其中我构建了一个值列表,如下所示:

data_df["items"] = data_df.apply(
lambda x: [x["item_1"], x["item_2"]]
if x["item_2"]
else [x["item_1"]],
axis=1,
)

在我看来,如果item_2存在,这种方法应该构建一个包含项目1和2的列表,否则它应该只构建一个包括项目1的列表。然而,对item_2的检查似乎没有按预期工作。我尝试过检查None值以及空字符串。我该如何写这篇文章,以便发生以下情况:

如果CCD_ 4和CCD_"返回[]

如果CCD_ 6不是None但CCD_"返回[item_1]

如果item_1item_2返回[item_1item_2]

此外,item_1item_2是字符串

使用pd.isna():

df['item_list'] = df[['item1', 'item2']].apply(lambda x: [i for i in x if not pd.isna(i)], 1)

更新:

df['item_list'] = df[['item1', 'item2']].apply(lambda x: [i for i in x if not (pd.isna(i) or i == '')], 1)

最新更新