繁体   English   中英

pandas 中的逻辑应用 function 不符合预期

[英]Logic in pandas apply function not as expected

我有一个 dataframe ,我在其中构造了一个值列表,如下所示:

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 的列表,否则它应该只构造一个包含 item_1 的列表。 但是,对item_2的检查似乎没有按预期工作。 我尝试检查None值以及空字符串。 我该如何写,以便发生以下情况:

如果item_1item_2为 None 或 "" 返回 []

如果item_1不是 None 但item_2是 None 或 "" 返回 [ item_1 ]

如果item_1item_2返回 [ item_1 , item_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)

暂无
暂无

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

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