ich Pandas Datenrahmen von Daten, in denen haben alle Zeilen innerhalb einer bestimmten Spalte übereinstimmen müssen:Alle Zeilen innerhalb einer bestimmten Spalte müssen übereinstimmen, für alle Spalten
df = pd.DataFrame({'A': [1,1,1,1,1,1,1,1,1,1],
'B': [2,2,2,2,2,2,2,2,2,2],
'C': [3,3,3,3,3,3,3,3,3,3],
'D': [4,4,4,4,4,4,4,4,4,4],
'E': [5,5,5,5,5,5,5,5,5,5]})
In [10]: df
Out[10]:
A B C D E
0 1 2 3 4 5
1 1 2 3 4 5
2 1 2 3 4 5
...
6 1 2 3 4 5
7 1 2 3 4 5
8 1 2 3 4 5
9 1 2 3 4 5
ich eine schnelle Art und Weise zu wissen, würde, wenn es ist eine Abweichung irgendwo im DataFrame. An dieser Stelle muss ich nicht wissen, welche Werte sich geändert haben, da ich später darauf eingehen werde. Ich brauche nur einen schnellen Weg, um zu wissen, ob der DataFrame weitere Aufmerksamkeit benötigt oder ob ich ihn ignorieren kann und mit dem nächsten fortfahren kann.
kann ich überprüfen, jede gegebene Spalte
(df.loc[:,'A'] != df.loc[0,'A']).any()
aber meine Pandas Wissen begrenzt mich durch die Spalten iterieren (I Iteration verstehen auf in Pandas verpönt), alle von ihnen zu vergleichen:
A B C D E
0 1 2 3 4 5
1 1 2 9 4 5
2 1 2 3 4 5
...
6 1 2 3 4 5
7 1 2 3 4 5
8 1 2 3 4 5
9 1 2 3 4 5
for col in df.columns:
if (df.loc[:,col] != df.loc[0,col]).any():
print("Found a fail in col %s" % col)
break
Out: Found a fail in col C
Gibt es eine elegante Möglichkeit, einen booleschen Wert zurückzugeben, wenn irgendeine Zeile innerhalb einer Spalte eines Datenrahmens nicht mit allen Werten in der Spalte übereinstimmt ... möglicherweise ohne Iteration?
Alle bisherigen Ansätze würden gut funktionieren, aber ich denke, dass das Verwenden von nunique() ein guter Hinweis für den Codeleser (mich) sein wird, was getan wird. –