[英]Pandas vectorized way to create groups of size n?
假設我有一個龐大的形狀張量(samples, timesteps, features)
,但是我想將其展開以對Pandas執行groupby
操作,如何以向量化的方式相應地標記每個n:n + size元素? 解決速度慢:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.normal(0, 1, 500))
df["sample"] = np.nan
n_timesteps = 50
n_samples = len(df) // n_timesteps
size = n_timesteps
for i in range(n_samples):
id0 = i * n_timesteps
id1 = i * n_timesteps + n_timesteps
df.loc[id0:id1, "sample"] = i
通過整數除以index
分配新列:
#default RangeIndex
df['sample'] = df.index // n_timesteps
或者通過創建一維數組numpy的arange
:
df['sample'] = np.arange(len(df)) // n_timesteps
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.