【发布时间】:2019-05-16 10:09:49
【问题描述】:
我有一个这样的数据框:
Ask Bid AskVolume BidVolume
Gmt time
2018-10-10 10:30:00.573 1.14908 1.14906 1.57 1.00
2018-10-10 10:30:01.044 1.14906 1.14904 1.00 6.67
2018-10-10 10:30:01.620 1.14905 1.14903 1.00 2.06
2018-10-10 10:30:01.934 1.14906 1.14902 1.95 4.69
2018-10-10 10:30:02.093 1.14904 1.14902 1.00 1.50
2018-10-10 10:30:02.422 1.14902 1.14901 1.20 1.25
2018-10-10 10:30:02.967 1.14902 1.14900 3.00 1.50
2018-10-10 10:30:03.485 1.14902 1.14899 1.50 6.75
2018-10-10 10:30:04.016 1.14902 1.14900 1.00 1.25
2018-10-10 10:30:04.584 1.14902 1.14899 1.10 3.94
2018-10-10 10:30:05.316 1.14902 1.14900 1.57 1.00
2018-10-10 10:30:06.457 1.14902 1.14899 1.10 3.00
2018-10-10 10:30:06.972 1.14901 1.14899 1.00 2.25
2018-10-10 10:30:07.606 1.14901 1.14898 2.70 3.00
2018-10-10 10:30:10.751 1.14901 1.14899 1.20 1.87
我想将Ask 列移动 1 秒增量。我试过这个,但返回 NaN。
df = pd.read_csv('2hour.csv')
delta = pd.Timedelta(1,unit='s')
df['Gmt time'] = pd.DatetimeIndex(df['Gmt time'])
df.set_index(keys='Gmt time',inplace=True)
df['Shifted_Ask'] = df['Ask'].shift(freq=delta)
print df.head()
预期:
Gmt time Ask Bid AskVolume BidVolume Shifted_Ask
2018-10-10 10:30:00.573 1.14908 1.14906 1.57 1.00 1.14906
2018-10-10 10:30:01.044 1.14906 1.14904 1.00 6.67 1.14902
2018-10-10 10:30:01.620 1.14905 1.14903 1.00 2.06 1.14902
2018-10-10 10:30:01.934 1.14906 1.14902 1.95 4.69 1.14902
2018-10-10 10:30:02.093 1.14904 1.14902 1.00 1.50 1.14902
【问题讨论】:
-
您能否在您的帖子中发布带有代码标签的预期示例输出,然后让我们知道。
-
@RavinderSingh13 我添加了预期的结果。我只想按时间移动
Ask列。Shifted_Ask在下一秒包含Ask列。 -
能否请您也在这里告诉我新预期列背后的逻辑?
-
@BehdadAhmadi - 因为 ASK 列不是日期时间
-
@Backtrack 但是数据框是按时间索引和排序的。如何按增量时间移动它?
标签: python pandas datetime time-series