【发布时间】:2019-02-25 19:16:11
【问题描述】:
问这个问题是因为我的新单元格中填充了 NaN,我在这里找不到我需要的答案。
假设我有以下数据框(这是一个更大的拼接数据框的虚拟子集:
pd.DataFrame(np.array([['onset', 100], ['NaN', 200], ['NaN', 350], ['NaN', 400]]), columns=['Event', 'Time'])
所以:
Event Time
0 onset 100
1 NaN 200
2 NaN 350
3 NaN 400
我想创建一个具有相对时间戳的列,例如:
Event Time reltime
0 onset 100 0
1 NaN 200 100
2 NaN 350 250
3 NaN 400 300
我会怎么做呢?我想我会在开始时用loc 定位时间,然后从列中减去该值,如下所示:
onsettime = df.loc[df['Event']=='onset', 'Time']
df['onsetlatency'] = df['Time']-onsettime
信息:
[In] print onsettime
[Out] 0 100
Name: Time, dtype: int64
但是,这仅适用于第一行,即使两个值都是 int64。 (如下)
Event Time reltime
0 onset 100 0.0
1 NaN 200 NaN
2 NaN 350 NaN
3 NaN 400 NaN
正确的方法是什么?
【问题讨论】: