Použil som groupby v pandách, ale označeniepre skupiny je jednoducho ľubovoľná hodnota, zatiaľ čo ja by som chcel, aby tento štítok bol indexom pôvodného dátového rámca (ktorý je datetime), aby som mohol vytvoriť nový dátový rámec, ktorý môžem vykresliť z hľadiska datetime.
grouped_data = df.groupby(
["X",df.X.ne(df.X.shift()).cumsum().rename("grp")])
grouped_data2 = grouped_data["Y"].agg(np.trapz).loc[2.0:4.0]
Stĺpec x má meniace sa hodnoty od 1 do 4 adruhá línia kódu je určená na integráciu stĺpca Y do skupín, kde X je buď 2 alebo 3. Jedná sa o opakujúce sa jednotky, takže nechcem, aby všetky 2 a všetky 3 boli integrované, chcem časové obdobie, kde to ide: 22222333333
ako jednu skupinu a potom np.trapz znovu použiť na nasledujúcu skupinu, kde ide: 2222233333
, Takto by som mal mať nový dátový rámec s indexom zodpovedajúcim začiatku týchto časových období a hodnotám, ktoré sú neoddeliteľnou súčasťou týchto období.
odpovede:
0 pre odpoveď č. 1Ak správne rozumiem, už ste nastavili index na hodnoty DateTime? Ak áno, skúste funkciu zoskupenia:
df.groupby(pd.Grouper(key={index name}, freq={appropriate offset alias}))
Bez vzorového súboru údajov nemôžem naozaj poskytnúť úplné riešenie, ale toto by malo vyriešiť problém s indexovaním :)