Index abrufen, wo Spalte True ist in pandas

English Deutsch

TL;DR

Verwenden Sie einfach

example.py
df[df["ZeroCrossing"]].index

Vollständiges Beispiel:

Wir verwenden die ZeroCrossing-Spalte, die wir in unserem vorherigen Beitrag über Wertwechsel in einer pandas-String-Spalte/Serie erkennen erstellt haben und die auf unserem Beitrag über pandas-Zeitreihen-DataFrame-Beispieldatensatz erstellen aufbaut. Basierend auf diesem Beispiel ändern wir nur die letzte Zeile:

example_full.py
import pandas as pd

# Vorgefertigten Zeitreihen-Beispieldatensatz laden
df = pd.read_csv("https://techoverflow.net/datasets/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)

# Neue Spalte mit "Positive" oder "Negative" erstellen
df["SinePositive"] = (df["Sine"] >= 0).map({True: "Positive", False: "Negative"})
# "Wechsel"-Spalte (boolesch) erstellen
df["ZeroCrossing"] = df["SinePositive"].shift() != df["SinePositive"]
# Ersten Eintrag auf False setzen
df["ZeroCrossing"].iloc[0] = False

# Ergebnis ausgeben
print(df[df["ZeroCrossing"]].index)

Dies gibt aus

output.txt
DatetimeIndex(['2020-05-25 20:05:10.040874', '2020-05-25 20:05:10.090874',
               '2020-05-25 20:05:10.140874', '2020-05-25 20:05:10.190874',
               '2020-05-25 20:05:10.240874', '2020-05-25 20:05:10.290874',
               '2020-05-25 20:05:10.340874', '2020-05-25 20:05:10.390874',
               '2020-05-25 20:05:10.440774', '2020-05-25 20:05:10.490874',
               '2020-05-25 20:05:10.540874', '2020-05-25 20:05:10.590874',
               '2020-05-25 20:05:10.640774', '2020-05-25 20:05:10.690874',
               '2020-05-25 20:05:10.740874', '2020-05-25 20:05:10.790874',
               '2020-05-25 20:05:10.840874', '2020-05-25 20:05:10.890774',
               '2020-05-25 20:05:10.940874'],
              dtype='datetime64[ns]', name='Timestamp', freq=None)

Check out similar posts by category: Pandas, Python