Ich versuche, die Anzahl der Änderungen von Wert in jeder Spalte in einem Datenrahmen in Pandas zählen. Der Code, den ich habe, funktioniert gut außer NaNs: Wenn eine Spalte zwei aufeinanderfolgende NaNs enthält, wird dies als Wertänderung gewertet, was ich nicht möchte. Wie kann ich das vermeiden?Zählen von Änderungen von Wert in jeder Spalte in einem Datenrahmen in Pandas ignorieren NaN-Änderungen
ich wie folgt (dank unutbu's answer):
import pandas as pd
import numpy as np
frame = pd.DataFrame({
'time':[1234567000 , np.NaN, np.NaN],
'X1':[96.32,96.01,96.05],
'X2':[23.88,23.96,23.96]
},columns=['time','X1','X2'])
print(frame)
changes = (frame.diff(axis=0) != 0).sum(axis=0)
print(changes)
changes = (frame != frame.shift(axis=0)).sum(axis=0)
print(changes)
kehrt:
time X1 X2
0 1.234567e+09 96.32 23.88
1 NaN 96.01 23.96
2 NaN 96.05 23.96
time 3
X1 3
X2 2
dtype: int64
time 3
X1 3
X2 2
dtype: int64
Stattdessen sollten die Ergebnisse sein (die Änderung in der Zeitspalte bemerken):
time 2
X1 3
X2 2
dtype: int64