我有一个数据帧:
var1 var2 var3 var4
Id#
1001 Y Y Y Y
1002 N N N N
1003 N N Y N
1003 Y Y Y N
我想创建一个名为Small的新列,其中如果任何var=Y,那么Small等于N
^{pr2}$我尝试过的解决方案: 我创建了一个名为is_small的函数,当一行中有一列是“Y”时,它就会翻转到“N”
def is_small(row, *cols):
_small = 'Y'
for col in cols:
if col == 'Y':
_small = 'N'
return _small
并将其应用于我的数据集:
all_data['Small'] = all_data.apply(lambda row: is_small(row,
'var1',
'var2',
'var3',
'var4'),
axis=1)
不管有多小我不知道为什么。在
您可以使用
numpy.where
(矢量化if/else):你快到了。但每次你传递“var1”,“var2”。。。into
is_small
,这就是为什么它总是返回'Y'。您应该传递row['var1']
,row['var2']
。。。。在相关问题 更多 >
编程相关推荐