pierre_j:
この質問は、私が以前に尋ねた1次のここでは、それが数値に答えました。
私は時代のタイプのデータと比較し、今この第二1を引き上げます。
下記の例は、単純に見えますが、私は実際にである窓持つ可変サイズを。ウィンドウの1行目に興味を持って、私はなりますが、この定義を使用することを技術を探しています。
import pandas as pd
from random import seed, randint
# DataFrame
pi1h = pd.period_range(start='2020-01-01 00:00+00:00', end='2020-01-02 00:00+00:00', freq='1h')
seed(1)
values = [randint(0, 10) for ts in pi1h]
df = pd.DataFrame({'Values' : values, 'Period' : pi1h}, index=pi1h)
# This works (numeric type)
df['first'] = df['Values'].rolling(3).agg(lambda rows: rows[0])
# This doesn't (Period type)
df['OpeningPeriod'] = df['Period'].rolling(3).agg(lambda rows: rows[0])
2番目のコマンドの結果
DataError: No numeric types to aggregate
してください、任意のアイデア?任意の助けてくれてありがとう!カテゴリーで探します、
グジェゴシSkibinski:
サイズのローリング・ウィンドウの最初の行3
2列電流以上であることを意味行、 -ちょうど使用pd.Series.shift(2)
。
df['OpeningPeriod'] = df['Period'].shift(2)
可変サイズの場合(例- Iのために取ったValues
この可変サイズと列):
import numpy as np
x=(np.arange(len(df))-df['Values'])
df['OpeningPeriod'] = np.where(x.ge(0), df.loc[df.index[x.tolist()], 'Period'], np.nan)