Angesichts eines nach Monat indizierten Datenrahmens möchte ich am Tag neu indizieren (upsample). Werte, die zuvor nach Monat indiziert wurden, sollten jetzt durch die Anzahl der Tage im Monat dividiert werden. Zusätzlich zum Index sollte eine Spalte in der Gruppierung verwendet werden. Ähnlich wie this - nur mit einer Spalte, die auch in der Gruppierung verwendet wird.Upsampling Dataframe in Pandas mit Index + Spalte
import pandas as pd
import numpy as np
np.random.seed(1234)
tidx_m = pd.date_range('2011-01-31', periods=5, freq='M')
df = pd.DataFrame(np.random.randint(0, 2, (5, 2)), columns=['class', 'val'])
df.index = tidx_m
df = pd.concat([df, df])
df.ix[:5, 'class'] = 0
df.ix[5:, 'class'] = 1
print(df)
class val
2011-01-31 0 1
2011-02-28 0 1
2011-03-31 0 0
2011-04-30 0 1
2011-05-31 0 1
2011-01-31 1 1
2011-02-28 1 1
2011-03-31 1 0
2011-04-30 1 1
2011-05-31 1 1
Nach Upsampling des Index anstelle von Monaten auf Tage, würde ich von dem Datetime-Index zu einer Gruppe wie undclass
. Werte in "val" sollten an allen Tagen im Monat neu verteilt werden (z. B. wird 1 für jeden Tag im Januar 1/31).
Können Sie Beispieldaten und gewünschte Ausgabe hinzufügen? – jezrael
In realen Daten sind Duplikate im Index? Ist es möglich, 'df = pd.concat ([df, df])' wegzulassen? – jezrael
Und danke für Probe. – jezrael