【发布时间】:2020-09-15 16:37:39
【问题描述】:
我在 pandas df 中有这两列:
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'的引号
-
谢谢,我没有注意到,但我得到了返回 IndexError: list index out of range
-
请发布您的预期输出
-
貌似也应该有逗号
result = np.vectorize(lambda i:mapping[i], x) -
@Techniquab 是的,谢谢。我纠正了它。我更新了输出。