我花了两天时间进行搜索,对您的帮助将不胜感激。
尝试根据其他列中的值创建c_flg。
a_flg b_flg Count c_flg (Expected Output)
False True 3 False
True False 2 False
False False 4 True
a_flg和b_flg是strs,Count是一个整数
从两个角度进行尝试,都没有成功。
方法1:
df['c_flg'] = np.where((df[(df['a_flg'] == 'False') &
(df['b_flg'] == 'False') &
(df['Count'] <= 6 )]), 'True', 'False')
ValueError:值的长度与索引的长度不匹配
方法2:
def test_func(df):
if (('a_flg' == 'False') &
('b_flg' == 'False') &
('Count' <= 6 )):
return True
else:
return False
df['c_flg']=df.apply(test_func, axis=1)
TypeError: ('unorderable types: str() <= int()', 'occurred at index 0')
Python语言的新手,将不胜感激。
答案 0 :(得分:0)
如果我正确地理解了您的问题,那么您需要这个,
df['c_flg']=(df['a_flg']=='False')&(df['b_flg']=='False')&(df['Count']<=6)
df['c_flg']=(df['a_flg']==False)&(df['b_flg']==False)&(df['Count']<=6)#use this if 'x_flg' is boolean
输出:
a_flg b_flg Count c_flg
0 False True 3 False
1 True False 2 False
2 False False 4 True
注意:对于这个问题,您实际上不需要numpy
,熊猫本身可以解决此问题。
答案 1 :(得分:0)
我认为np.where
不是必需的,将~
用于反转布尔掩码,将链&
用于按位AND
:
print (df.dtypes)
a_flg bool
b_flg bool
Count int64
dtype: object
df['c_flg'] = ~df['a_flg'] & ~df['b_flg'] & (df['Count'] <= 6)
print (df)
a_flg b_flg Count c_flg
0 False True 3 False
1 True False 2 False
2 False False 4 True