我有一个数据帧,在其中我构建了一个值列表,如下所示:
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_1
和item_2
返回[item_1
,item_2
]
此外,item_1
和item_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)