Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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_Pandas_Sklearn Pandas_Data Wrangling - Fatal编程技术网

Python 如何创建连续批次组(时间序列数据)

Python 如何创建连续批次组(时间序列数据),python,pandas,sklearn-pandas,data-wrangling,Python,Pandas,Sklearn Pandas,Data Wrangling,我有一个时间序列的数据,我需要创建N批用于培训。 例如,对于3个批次,需要将行[0,1,2]标记为[1,1,1],[3,4,5]标记为[2,2,2],[6,7,8]标记为[3,3] 样本数据: Diff N_Bars 0 -2.17 22.0 1 4.13 48.0 2 -0.65 4.0 3 2.06 59.0 4 -2.07 11.0 5 0.68 8.0 6 -0.43 2.0 7 1.21 19.0 8 -0.39

我有一个时间序列的数据,我需要创建N批用于培训。 例如,对于3个批次,需要将行
[0,1,2]
标记为
[1,1,1]
[3,4,5]
标记为
[2,2,2]
[6,7,8]
标记为
[3,3]

样本数据:

   Diff  N_Bars
0 -2.17    22.0
1  4.13    48.0
2 -0.65     4.0
3  2.06    59.0
4 -2.07    11.0
5  0.68     8.0
6 -0.43     2.0
7  1.21    19.0
8 -0.39     9.0

您可以尝试以下方法:

import pandas as pd
import numpy as np

n=3 #batches of 3
df=pd.DataFrame({"A":np.random.rand(10),"B":np.random.rand(10)})
df["index"]=df.index
df["label_batches"]=df["index"].apply(lambda x : x//n) 

您可以尝试以下方法:

import pandas as pd
import numpy as np

n=3 #batches of 3
df=pd.DataFrame({"A":np.random.rand(10),"B":np.random.rand(10)})
df["index"]=df.index
df["label_batches"]=df["index"].apply(lambda x : x//n) 

如果您只想替换索引,而不介意重复索引,只需使用
index//n_per_group+1
(楼层划分)设置一个新索引即可:

优点:您可以按批次标签进行索引。
缺点:索引中的重复项可能会引起一些麻烦


当然,您也可以将其设置为新行,而不是替换索引:

n_per_group = 3
df['batchlabel'] = df.index // n_per_group + 1
优势:索引中没有重复项。
缺点:批次标签索引必须通过f.i.
df[df['batchlabel']==2]
间接完成

建议的解决方案:
但是最好的方法是创建一个
多索引
,批次在0级,旧索引在1级。通过这种方式,您可以避免重复的但仍然可以按批号进行索引。

n_per_group = 3
# create multiindex
new_midx = pd.MultiIndex.from_arrays((df.index //  n_per_group  +  1, df.index))
# assign multiindex
df_midx = df.set_index(new_midx)

# index by batch number:
df_midx.loc[2]
# Out:
   Diff  N_Bars
3  2.06    59.0
4 -2.07    11.0
5  0.68     8.0

如果您只想替换索引,而不介意重复索引,只需使用
index//n_per_group+1
(楼层划分)设置一个新索引即可:

优点:您可以按批次标签进行索引。
缺点:索引中的重复项可能会引起一些麻烦


当然,您也可以将其设置为新行,而不是替换索引:

n_per_group = 3
df['batchlabel'] = df.index // n_per_group + 1
优势:索引中没有重复项。
缺点:批次标签索引必须通过f.i.
df[df['batchlabel']==2]
间接完成

建议的解决方案:
但是最好的方法是创建一个
多索引
,批次在0级,旧索引在1级。通过这种方式,您可以避免重复的但仍然可以按批号进行索引。

n_per_group = 3
# create multiindex
new_midx = pd.MultiIndex.from_arrays((df.index //  n_per_group  +  1, df.index))
# assign multiindex
df_midx = df.set_index(new_midx)

# index by batch number:
df_midx.loc[2]
# Out:
   Diff  N_Bars
3  2.06    59.0
4 -2.07    11.0
5  0.68     8.0

到目前为止你试过什么?您能给我们展示一个输出示例,这样我们就可以看到所需的数据结构(多索引、cat、interval…)了吗?到目前为止您尝试了什么?您能给出一个输出示例,这样我们就可以看到所需的数据结构(多索引、cat、区间…)?