根据条件创建新列 (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
。
此外,与True
或False
相比,更推荐使用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
我有一个数据框,其中一列“交易”是一个 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
。
此外,与True
或False
相比,更推荐使用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