Lassen Sie Blöcke von 1 der Größe> = k im Pandas-Datenrahmen

Ich muss Block> = k von '1' verlassen. Alle anderen Block von '1' sollte auf Null umgewandelt werden. Zum Beispiel k = 2 :

df= ab 0 1 1 1 1 1 2 0 0 3 1 0 4 0 0 5 1 0 6 0 0 7 1 0 8 0 0 9 1 1 10 1 1 11 1 1 12 0 0 13 0 0 14 1 0 15 0 0 16 1 1 17 1 1 18 0 0 19 1 0 

Wo die Spalte a die ursprüngliche Sequenz ist und die Spalte b die gewünschte ist.

One Solution collect form web for “Lassen Sie Blöcke von 1 der Größe> = k im Pandas-Datenrahmen”

 z = df.a.eq(0) g = z.cumsum().mask(z, -1) k = 2 df['b'] = df.a.groupby(g).transform('size').ge(k).mask(z, 0) ab 0 1 1 1 1 1 2 0 0 3 1 0 4 0 0 5 1 0 6 0 0 7 1 0 8 0 0 9 1 1 10 1 1 11 1 1 12 0 0 13 0 0 14 1 0 15 0 0 16 1 1 17 1 1 18 0 0 19 1 0 
  • Pandas - Plotten eines gestapelten Balkendiagramms
  • Wie man LINQ ThenBy in Pandas ausführt?
  • Pandas: Drop () int64 basierend auf value returns object
  • Verknüpfen mehrerer DataFrames mit nicht standardmäßigen Spalten
  • Wiederholen einer Zeitreihe von Ereignissen + Dauer in gleichzeitige Ereignisse
  • Leistung der Erstellung neuer DataFrame
  • Erzeugen Sie neue Dataframe mit Werten in alten Dataframe als neue Funktionen in Python
  • Arbeiten mit JSON in JSON mit Python / Pandas verschachtelt
  • Dfply: Mutating string column: TypeError
  • Konvertieren von Wörterbuch zu Dataframe mit Tupel als Schlüssel
  • DataFrame zu verschachteltem JSON
  • Python ist die beste Programmiersprache der Welt.