Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫们又迈了一大步,一行一行地切着_Python_Python 3.x_Pandas - Fatal编程技术网

Python 熊猫们又迈了一大步,一行一行地切着

Python 熊猫们又迈了一大步,一行一行地切着,python,python-3.x,pandas,Python,Python 3.x,Pandas,以下是我掌握的数据: o h l c time 2019.02.04 01:21:00 x x x x 2019.02.04 01:22:00 x x x x 2019.02.04 01:23:00 x x x x 2019.02.04 01:24:00 x x x x 2019.02.04 01:25:00 x x x x 2019.02.04 01:2

以下是我掌握的数据:

                     o  h  l  c
time                           
2019.02.04 01:21:00  x  x  x  x
2019.02.04 01:22:00  x  x  x  x
2019.02.04 01:23:00  x  x  x  x
2019.02.04 01:24:00  x  x  x  x
2019.02.04 01:25:00  x  x  x  x
2019.02.04 01:26:00  x  x  x  x
2019.02.04 01:27:00  x  x  x  x
2019.02.04 01:28:00  x  x  x  x
2019.02.04 01:29:00  x  x  x  x
2019.02.04 01:30:00  x  x  x  x
2019.02.04 01:31:00  x  x  x  x
2019.02.04 01:32:00  x  x  x  x
2019.02.04 01:33:00  x  x  x  x
2019.02.04 01:34:00  x  x  x  x
2019.02.04 01:35:00  x  x  x  x
2019.02.04 01:36:00  x  x  x  x
2019.02.04 01:37:00  x  x  x  x
2019.02.04 01:38:00  x  x  x  x
2019.02.04 01:39:00  x  x  x  x
2019.02.04 01:40:00  x  x  x  x
2019.02.04 01:41:00  x  x  x  x
2019.02.04 01:42:00  x  x  x  x
2019.02.04 01:43:00  x  x  x  x
2019.02.04 01:44:00  x  x  x  x
2019.02.04 01:45:00  x  x  x  x
随着时间的
索引
,我尝试了分离这些值。但是没有成功

从一开始,我希望每3行切片一次,同时在每个切片之间跳过2行

我试过这个:

df_candle = df[5:400+2]
但这是从
5到402的简单系列。我想它会帮助我用2跳

我期望结果如下:

time,o,h,l,c
2019.02.04 01:21:00,x,x,x,x
2019.02.04 01:22:00,x,x,x,x
2019.02.04 01:23:00,x,x,x,x
2019.02.04 01:26:00,x,x,x,x
2019.02.04 01:27:00,x,x,x,x
2019.02.04 01:28:00,x,x,x,x
2019.02.04 01:31:00,x,x,x,x
2019.02.04 01:32:00,x,x,x,x
2019.02.04 01:33:00,x,x,x,x
2019.02.04 01:36:00,x,x,x,x
2019.02.04 01:37:00,x,x,x,x
2019.02.04 01:38:00,x,x,x,x
2019.02.04 01:41:00,x,x,x,x
2019.02.04 01:42:00,x,x,x,x
2019.02.04 01:43:00,x,x,x,x
请让我知道我能做什么。

试试:

df1=df[5:400]
print(df1.drop([i for i in df1.index.tolist() if (str(i)[-1] in ['8','9']) or (str(i+5)[-1] in ['8','9'])]))
输出:

                   time        o        h        l        c
5   2019.02.04 01:26:00  1.14558  1.14558  1.14556  1.14556
6   2019.02.04 01:27:00  1.14556  1.14556  1.14556  1.14556
7   2019.02.04 01:28:00  1.14556  1.14556  1.14549  1.14551
10  2019.02.04 01:31:00  1.14554  1.14554  1.14546  1.14546
11  2019.02.04 01:32:00  1.14551  1.14551  1.14541  1.14544
12  2019.02.04 01:33:00  1.14543  1.14543  1.14541  1.14541
15  2019.02.04 01:36:00  1.14557  1.14558  1.14553  1.14556
16  2019.02.04 01:37:00  1.14556  1.14556  1.14556  1.14556
17  2019.02.04 01:38:00  1.14557  1.14557  1.14556  1.14556
20  2019.02.04 01:41:00  1.14555  1.14555  1.14555  1.14555
21  2019.02.04 01:42:00  1.14555  1.14555  1.14551  1.14551
22  2019.02.04 01:43:00  1.14555  1.14555  1.14551  1.14551
尝试:

输出:

                   time        o        h        l        c
5   2019.02.04 01:26:00  1.14558  1.14558  1.14556  1.14556
6   2019.02.04 01:27:00  1.14556  1.14556  1.14556  1.14556
7   2019.02.04 01:28:00  1.14556  1.14556  1.14549  1.14551
10  2019.02.04 01:31:00  1.14554  1.14554  1.14546  1.14546
11  2019.02.04 01:32:00  1.14551  1.14551  1.14541  1.14544
12  2019.02.04 01:33:00  1.14543  1.14543  1.14541  1.14541
15  2019.02.04 01:36:00  1.14557  1.14558  1.14553  1.14556
16  2019.02.04 01:37:00  1.14556  1.14556  1.14556  1.14556
17  2019.02.04 01:38:00  1.14557  1.14557  1.14556  1.14556
20  2019.02.04 01:41:00  1.14555  1.14555  1.14555  1.14555
21  2019.02.04 01:42:00  1.14555  1.14555  1.14551  1.14551
22  2019.02.04 01:43:00  1.14555  1.14555  1.14551  1.14551

IIUC,你在寻找可变步长切片。我能想到的一个选项是使用
groupby
cumcount
构建过滤器掩码:

df[df.groupby(pd.RangeIndex(len(df)) // 5).cumcount() < 3]

                     o  h  l  c
time                           
2019.02.04 01:21:00  x  x  x  x
2019.02.04 01:22:00  x  x  x  x
2019.02.04 01:23:00  x  x  x  x
2019.02.04 01:26:00  x  x  x  x
2019.02.04 01:27:00  x  x  x  x
2019.02.04 01:28:00  x  x  x  x
2019.02.04 01:31:00  x  x  x  x
2019.02.04 01:32:00  x  x  x  x
2019.02.04 01:33:00  x  x  x  x
2019.02.04 01:36:00  x  x  x  x
2019.02.04 01:37:00  x  x  x  x
2019.02.04 01:38:00  x  x  x  x
2019.02.04 01:41:00  x  x  x  x
2019.02.04 01:42:00  x  x  x  x
2019.02.04 01:43:00  x  x  x  x
df[df.groupby(pd.RangeIndex(len(df))//5.cumcount()<3]
o h l c
时间
2019.02.04 01:21:00 x x
2019.02.04 01:22:00 x x
2019.02.04 01:23:00 x x
2019.02.04 01:26:00 x x
2019.02.04 01:27:00 x x
2019.02.04 01:28:00 x x
2019.02.04 01:31:00 x x
2019.02.04 01:32:00 x x
2019.02.04 01:33:00 x x
2019.02.04 01:36:00 x x
2019.02.04 01:37:00 x x
2019.02.04 01:38:00 x x
2019.02.04 01:41:00 x x
2019.02.04 01:42:00 x x
2019.02.04 01:43:00 x x

IIUC,您正在寻找可变步长切片。我能想到的一个选项是使用
groupby
cumcount
构建过滤器掩码:

df[df.groupby(pd.RangeIndex(len(df)) // 5).cumcount() < 3]

                     o  h  l  c
time                           
2019.02.04 01:21:00  x  x  x  x
2019.02.04 01:22:00  x  x  x  x
2019.02.04 01:23:00  x  x  x  x
2019.02.04 01:26:00  x  x  x  x
2019.02.04 01:27:00  x  x  x  x
2019.02.04 01:28:00  x  x  x  x
2019.02.04 01:31:00  x  x  x  x
2019.02.04 01:32:00  x  x  x  x
2019.02.04 01:33:00  x  x  x  x
2019.02.04 01:36:00  x  x  x  x
2019.02.04 01:37:00  x  x  x  x
2019.02.04 01:38:00  x  x  x  x
2019.02.04 01:41:00  x  x  x  x
2019.02.04 01:42:00  x  x  x  x
2019.02.04 01:43:00  x  x  x  x
df[df.groupby(pd.RangeIndex(len(df))//5.cumcount()<3]
o h l c
时间
2019.02.04 01:21:00 x x
2019.02.04 01:22:00 x x
2019.02.04 01:23:00 x x
2019.02.04 01:26:00 x x
2019.02.04 01:27:00 x x
2019.02.04 01:28:00 x x
2019.02.04 01:31:00 x x
2019.02.04 01:32:00 x x
2019.02.04 01:33:00 x x
2019.02.04 01:36:00 x x
2019.02.04 01:37:00 x x
2019.02.04 01:38:00 x x
2019.02.04 01:41:00 x x
2019.02.04 01:42:00 x x
2019.02.04 01:43:00 x x


Jump不能像现在这样工作expecting@coldspeed您测试过我提供的样品了吗?测试结果是否相同?没有,但仍然不清楚您想要什么,因为预期输出与您问题中的描述不同。@coldspeed先生,我已经显示了我的预期。我尝试了一些本可以帮助我的方法,但事实并非如此。我想得到预期结果中所示的输出expecting@coldspeed您测试过我提供的样品了吗?测试结果是否相同?没有,但仍然不清楚您想要什么,因为预期输出与您问题中的描述不同。@coldspeed先生,我已经显示了我的预期。我尝试了一些本可以帮助我的方法,但事实并非如此。我想得到预期的结果。先生,你看到我的数据了吗?你给出的解决方案不起作用,给了我同样的结果。我也粘贴了预期的结果。@JafferWilson为什么,它给了我预期的结果,如果你尝试了
print(df[5:400][::2])
?我得到的结果是:你看到的不是预期的结果,先生。@JafferWilson对不起,你能解释一下逻辑吗?当然,我从某一行到某一行取值。在这中间,我保留前三行,删除下两行,然后再次保留三行,删除两行。等等我清楚了吗,先生?先生你看到我的数据了吗?你给出的解决方案不起作用,给了我同样的结果。我也粘贴了预期的结果。@JafferWilson为什么,它给了我预期的结果,如果你尝试了
print(df[5:400][::2])
?我得到的结果是:你看到的不是预期的结果,先生。@JafferWilson对不起,你能解释一下逻辑吗?当然,我从某一行到某一行取值。在这中间,我保留前三行,删除下两行,然后再次保留三行,删除两行。等等我明白了吗,先生?我能从一个可能的点开始吗?例如,如果我只想从5到400获取数据帧,而不应该使用rest,那么我可以这样做吗?@JafferWilson是第一步;执行
df1=df.iloc[5:400]
,然后您可以在
df1
上运行此代码。我可以从一个可能的点开始吗?例如,如果我只想从5到400获取数据帧,而不应该使用rest,那么我可以这样做吗?@JafferWilson是第一步;执行
df1=df.iloc[5:400]
,然后可以在
df1
上运行此代码。