使用Pandas从交易数据中获取上一天的日期

时间:2017-02-03 19:56:54

标签: python-2.7 pandas

我有一个交易数据的数据集,其中许多交易每天都会发生,但并非所有日子都会有交易。我想为每笔交易计算自交易的最近一天(当天除外)以来的天数。

from StringIO import StringIO

import pandas as pd

TESTDATA=StringIO("""time,message
2015-02-01,x
2015-02-01,z
2015-02-02,x
2015-02-04,y
2015-02-04,z
""")

s = pd.read_csv(TESTDATA, sep=",",parse_dates=[0])

我想要的是:

2015-02-01,x,nan
2015-02-01,z,nan
2015-02-02,x,1
2015-02-04,y,2
2015-02-04,z,2

1 个答案:

答案 0 :(得分:2)

使用merge_asof:

s['time2'] = s['time']
df = pd.merge_asof(s, s, left_on='time', right_on='time', allow_exact_matches=False)
df
Out[328]: 
        time message_x    time2_x message_y    time2_y
0 2015-02-01         x 2015-02-01       NaN        NaT
1 2015-02-01         z 2015-02-01       NaN        NaT
2 2015-02-02         x 2015-02-02         z 2015-02-01
3 2015-02-04         y 2015-02-04         x 2015-02-02
4 2015-02-04         z 2015-02-04         x 2015-02-02

df.time - df.time2_y
Out[330]: 
0      NaT
1      NaT
2   1 days
3   2 days
4   2 days
dtype: timedelta64[ns]