我有1分钟的股票数据如下:
bidopen bidhigh bidlow bidclose bidvolume
currencypair
2007-03-30 16:01:00 1.9687 1.96900 1.9686 1.9686 877.40
2007-03-30 16:02:00 1.9686 1.96905 1.9686 1.9686 897.20
2007-03-30 16:03:00 1.9686 1.96900 1.9686 1.9690 1076.11
2007-03-30 16:04:00 1.9689 1.96910 1.9688 1.9690 849.70
2007-03-30 16:05:00 1.9690 1.96900 1.9688 1.9689 1402.80
我想增加一列。本专栏将:
我尝试了以下方法。我首先读取数据。在
^{pr2}$定义函数:
^{3}$那么
df['newcolumn'] = map( lookaheadmaxmin, df[:15])
这个错误。我很确定映射中的“df[:15]”是个问题,因为我不知道如何将当前和未来记录的一部分传递给函数
基本上,我要做的是确定价格在15分钟的移动窗口内移动了多少,如下所示:
介于两者之间; 16: 00-16:15-价格变动了多少?把这个写在16点的记录栏里
16:01-16:16-价格变动了多少?把这个放在16:01记录栏里
16:02-16:17-价格变动了多少?把这个放在16:02记录栏里
16:03-16:18-价格变动了多少?把这个写在16:03的记录栏里
16:04-16:19-价格变动了多少?把这个放在16:04记录栏里
16:05-16:20-价格变动了多少?把这个写在16:05的记录栏里
其他信息:
我在Mac上使用的是Enthough Canopy版本1.1.0(64位)。 熊猫版本:版本:0.12.0-1(合并numpy 1.7.1)
源数据示例:
currencypair,datetime,bidopen,bidhigh,bidlow,bidclose,askopen,askhigh,asklow,askclose,bidvolume,askvolume
GBPUSD,2007-03-30 16:01:00,1.96870,1.96900,1.96860,1.96860,1.96850,1.96880,1.96845,1.96850,877.40,1386.70
GBPUSD,2007-03-30 16:02:00,1.96860,1.96905,1.96860,1.96860,1.96850,1.96890,1.96840,1.96840,897.20,1272.30
GBPUSD,2007-03-30 16:03:00,1.96860,1.96900,1.96860,1.96900,1.96850,1.96890,1.96840,1.96880,1076.11,1333.30
GBPUSD,2007-03-30 16:04:00,1.96890,1.96910,1.96880,1.96900,1.96880,1.96890,1.96865,1.96880,849.70,765.10
GBPUSD,2007-03-30 16:05:00,1.96900,1.96900,1.96880,1.96890,1.96875,1.96890,1.96860,1.96870,1402.80,1240.90
GBPUSD,2007-03-30 16:06:00,1.96890,1.96890,1.96840,1.96860,1.96870,1.96870,1.96820,1.96850,769.50,1727.30
GBPUSD,2007-03-30 16:07:00,1.96860,1.96880,1.96820,1.96830,1.96850,1.96870,1.96810,1.96820,842.00,1865.60
GBPUSD,2007-03-30 16:08:00,1.96830,1.96930,1.96830,1.96910,1.96820,1.96920,1.96820,1.96890,1096.60,1197.70
GBPUSD,2007-03-30 16:09:00,1.96910,1.96920,1.96880,1.96890,1.96895,1.96910,1.96865,1.96880,368.60,432.10
作为旁注-在记录的显示中有一些奇怪的东西(我使用的是ipython笔记本)。尽管我忽略了'currencypair'
列,但奇怪的是它显示为列标题。(我把它包括在内,因为我不知道它是否与其他不起作用的事情有关。)
导入数据(使用上面的csv\u read)(Note no 'currencypair'
列命名)
然后做什么
df[:5]
显示:(注意它将'currencypair'
显示为列标题,但在下面的df.info()
中,它只显示为'index'
)
bidopen bidhigh bidlow bidclose bidvolume
currencypair
2007-03-30 16:01:00 1.9687 1.96900 1.9686 1.9686 877.40
2007-03-30 16:02:00 1.9686 1.96905 1.9686 1.9686 897.20
2007-03-30 16:03:00 1.9686 1.96900 1.9686 1.9690 1076.11
2007-03-30 16:04:00 1.9689 1.96910 1.9688 1.9690 849.70
2007-03-30 16:05:00 1.9690 1.96900 1.9688 1.9689 1402.80
df.info()
显示:
<class 'pandas.core.frame.DataFrame'>
Index: 2362159 entries, 2007-03-30 16:01:00 to 2013-09-02 18:59:00
Data columns (total 5 columns):
bidopen 2362159 non-null values
bidhigh 2362159 non-null values
bidlow 2362159 non-null values
bidclose 2362159 non-null values
bidvolume 2362159 non-null values
dtypes: float64(5)
以另一种方式导入数据
导入并删除currencypair列;(注意添加'currencypair'
,然后在后面删除该列)
usecols = ['currencypair','datetime','bidopen','bidhigh','bidlow','bidclose','bidvolume']
df=pd.read_csv(path,parse_dates=('datetime'),index_col=1, usecols = usecols )
df=df.drop('currencypair',1)
显示:
bidopen bidhigh bidlow bidclose bidvolume
datetime
2007-03-30 16:01:00 1.9687 1.96900 1.9686 1.9686 877.40
2007-03-30 16:02:00 1.9686 1.96905 1.9686 1.9686 897.20
2007-03-30 16:03:00 1.9686 1.96900 1.9686 1.9690 1076.11
2007-03-30 16:04:00 1.9689 1.96910 1.9688 1.9690 849.70
2007-03-30 16:05:00 1.9690 1.96900 1.9688 1.9689 1402.80
并且df.info()
显示:(注意索引现在显示为'DatetimeIndex'
)
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2362159 entries, 2007-03-30 16:01:00 to 2013-09-02 18:59:00
Data columns (total 5 columns):
bidopen 2362159 non-null values
bidhigh 2362159 non-null values
bidlow 2362159 non-null values
bidclose 2362159 non-null values
bidvolume 2362159 non-null values
dtypes: float64(5)
当您只需要指定几个列时非常简单 e、 g.a的最大值,b的最小值
滚动函数从这一点开始计算,所以我们进行时间偏移(这只是改变索引) 使值对齐(与起点,而不是终点)
^{pr2}$高低差只是
似乎您的系列中有空白,请使用
asfreq
:相关问题 更多 >
编程相关推荐