首页 > 解决方案 > Pandas:如果预先存在的列包含某些值,则使用“是”创建一个新列,如果该列的值为“”,则创建一个“否”

问题描述

我试图在我的“df”中添加一个包含“是”的列,以防预先存在的列包含一些值,并且如果列的值为“”,则显示“否”(注意“”之间的空格) .

这是一个例子:

my_dict = {'Products': {0: 0, 1: 1, 2: 2}, 'Prices': {0: ' ', 1: ' ', 2: 'C'}}
my_df = pd.DataFrame(my_dict)

my_df['Direct debit'] = my_df['Category'].apply(lambda x: "Yes" if not "' '" else "NO")

返回:

在此处输入图像描述

在所有情况下,“输出”都是“否”,但它应该在 my_df['Category'] 有任何值的地方说“是”。

我应该在我的代码中修复什么?

标签: pythonpandas

解决方案


使用np.where

import numpy as np
my_df['Direct debit'] = np.where(my_df['Category'] != '', 'Yes', 'No')

顺便说一句,请记住' ', '', 是不同的


推荐阅读