Index abrufen, wo Spalte True ist in pandas
English
Deutsch
TL;DR
Verwenden Sie einfach
example.py
df[df["ZeroCrossing"]].indexVollstä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)If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow