根据条件创建新列 (python)

creating new column based on condition (python)

我有一个数据框,其中一列“交易”是一个 TRUE/FALSE 布尔值。我想创建一个新列,当“交易”列为 True 时填充 1,当“交易”列为 False 时填充 0。

我尝试了以下代码,但它给了我所有的零。请帮助

df['madedeal'] = np.where(df['deal']=='True', 1, 0)

您可以简单地使用 astype(int) 将 True 转换为 1,将 False 转换为 0(此处不需要 np.where):

df['madedeal'] = df['deal'].astype(int)

您必须与 True 进行比较,而不是 "True",因为 "True"str

此外,与TrueFalse相比,更推荐使用is而不是==PEP 8: E712 comparison to True should be 'if cond is True:' or 'if cond:')。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'deal': [True, False, True, False]
})

df['madedeal'] = np.where(df['deal'] is True, 1, 0)
# df['madedeal'] = np.where(df['deal'], 1, 0 # This also works as @sammywemmy commented.

print(df)

#    deal  madedeal
#0   True         1
#1  False         0
#2   True         1
#3  False         0