【发布时间】:2019-03-05 11:28:06
【问题描述】:
我有列df['Status'],其中有一些对象:
In: df.Status.unique()
Out: array([nan, 'Open', 'Plmt', 'SHRT', 'Check'], dtype=object)
列:
In: df['Status']
Out: time Status
2016-01-15 08:55:00 Open
2016-01-15 09:00:00 Plmt
2016-01-15 09:05:00 Plmt
2016-01-15 09:10:00 Plmt
2016-01-15 09:15:00 Plmt
2016-01-15 09:20:00 Plmt
2016-01-15 09:25:00 Plmt
2016-01-15 09:30:00 Plmt
2016-01-15 09:35:00 Plmt
2016-01-15 09:40:00 SHRT
time 在哪里:
df.index = df['time']
df.index = pd.to_datetime(df.index)
我想跳过不需要的值('Plmt', 'Check', 'nan'),创建新列 df['Diff'],'Open' 'SHRT' 之间的分钟差在哪里。
我正在尝试这样:
df['Status'][df['Status'] == 'SHRT'] - df['Status'][df['Status'] == 'Open']
但在输出中接收 NaN 值:
time
2016-01-15 08:55:00 NaN
2016-01-15 09:40:00 NaN
2016-01-18 08:30:00 NaN
2016-01-19 14:30:00 NaN
2016-01-19 14:35:00 NaN
2016-01-20 11:10:00 NaN
2016-01-20 11:45:00 NaN
预期的输出必须如下所示:
time Status Diff
2016-01-15 08:55:00 Open NaN
2016-01-15 09:40:00 SHRT 00:45:00
2016-02-15 10:00:00 Open NaN
2016-02-15 14:15:00 SHRT 02:15:00
如何获得时差,有人可以帮忙吗?
【问题讨论】:
-
预期输出是什么?只有一个
Open和一个SHRT值? -
@jezrael 预期输出是时间差,从
Open到SHRT:在列中有超过 500 个值 -
好的,所以请检查上面的第二个链接并创建minimal, complete, and verifiable example,将多个值
Open和SHRT添加到数据样本中,并以数字形式输出。 -
@jezrael 我没问清楚吗?
-
@jezrael 好的,我会尽量改进描述
标签: python pandas datetime dataframe