我是这个数据科学世界的新手,正在尝试了解一些基本的Pandas例子。我有一个Pandas数据框,我想创建一个新的列,并添加一些条件值,如下所示:它将每隔2秒包含yes
。否则包含no
。以下是一个示例:这是我的原始数据框。
id name time
0 1 name1 260.123
1 2 name2 261.323
2 3 name3 261.342
3 4 name4 261.567
4 5 name5 262.123
...
新的数据框将如下所示:
id name time time_delta
0 1 name1 260.123 yes
1 2 name2 261.323 no
2 3 name3 261.342 no
3 4 name4 261.567 no
4 5 name5 262.123 yes
5 6 name6 262.345 yes
6 7 name7 264.876 yes
7 8 name8 265.234 no
8 9 name9 266.234 yes
9 10 name10 267.234 no
...
我使用的代码是:df['time_delta'] = df['time'].apply(apply_test)
函数的实际代码:
def apply_test(num):
prev = num
if round(num) != prev + 2:
prev = prev
return "no"
else:
prev = num
return "yes"
请注意,时间列有小数,没有模式。
结果是所有的no
,因为在每次迭代中prev被分配给下一个数字。这是我想的方式。不确定是否有其他更好的方式。我将感谢任何帮助。
最新消息:
- 请注意,时间列有小数,在这种情况下,小数值没有值。例如,时间=234.xxx将被视为234秒。因此,下一个2秒点是236。
- 如果我们向下取整,数据框会有多个秒值。在这种情况下,所有秒值都必须标记为
yes
。请参考更新结果数据框作为示例。
2条答案
按热度按时间dsf9zpds1#
你可以检查当
diff
的累计和的剩余值除以2后的变化值,即当它进入一个长度为2的新段时:tgabmvqs2#
您可以用途:
输出量: