在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的地方。