在Python中使用np.vectorize映射布尔值

在Python中使用np.vectorize映射布尔值,python,pandas,boolean,Python,Pandas,Boolean,我有两个专栏: seconds min 0 52 0.866667 1 5 0.083333 2 10 0.166667 3 5 0.083333 4 16 0.266667 197 144 2.400000 我只想在['seconds']大于60时在['min']列中以分钟为单位转换秒数,否则它应该为空 我

我有两个专栏:

     seconds       min
0              52  0.866667
1               5  0.083333
2              10  0.166667
3               5  0.083333
4              16  0.266667
197           144  2.400000
我只想在['seconds']大于60时在['min']列中以分钟为单位转换秒数,否则它应该为空

我尝试在布尔值中转换['min']列:

    x = df['min'] = np.array(df['seconds'].apply(lambda x: True if x >60 else False))
我得到了布尔值,然后我尝试映射它:

    mapping = [df['seconds']/60]
    result = np.vectorize(lambda i:mapping[i], x)
但我得到了回报:

TypeError:列表索引必须是整数或片,而不是str

这是正确的方法还是有其他更简单的解决方案

输出:

    seconds       min
0              52  
1               5  
2              10  
3               5  
4              16  
197           144  2.400000

您的'True'和'False'不是布尔字符串。布尔人没有引号

我不确定如何使用你的矢量化方法,但下面的方法会奏效

df.loc[df['seconds']60,'min']=df['seconds'][df['seconds']>60]/60

删除'True'和'False'中的引号谢谢,我没有注意到这一点,但我得到了返回索引器:列表索引超出范围请发布您的预期输出,这样看起来应该有一个逗号
result=np.vectorize(lambda I:mapping[I],x)
@Techniquab是的,谢谢。我纠正了它。我更新了输出。我知道了,谢谢。我想把[df['seconds']>60]/60映射到我有False的地方。