Python 如何创建连续批次组(时间序列数据)
我有一个时间序列的数据,我需要创建N批用于培训。 例如,对于3个批次,需要将行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
[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、区间…)?