Ich versuche, das zu tun, folgende:Bewerben Rückkehr Datenrahmen, wenn sie eine Serie zurückkehren sollte
- Wählen Sie eine zufällige Reihe von meiner Pandas Dataframe
- Subset der Datenrahmen nur Zeilen enthalten, die die zufällig ausgewählt entsprechen Zeile in 2 spezifischen Spalten, 'Type' und 'LocationID'.
Hier ist der entsprechende Code-Schnipsel:
import pandas as pd
train = pd.DataFrame(
{'Type': ['Rad', 'Rad', 'Rad', 'Rad', 'Rad'],
'LocationID': ['6', '6', '6', '6', '6'],
'UserID': [0, 1, 2, 3, 4]})
u1 = train.sample(n=1)
group_feat = ['Type', 'LocationID']
for gf in group_feat:
match = train[gf].apply(lambda x: x == u1[gf])
train = train.loc[match]
Mein Code einen Fehler in der letzten Zeile von der .loc Funktion wirft:
ValueError: Cannot index with multidimensional key
Weitere Untersuchungen ergaben, dass die Art der Variable match
ist keine Serie, sondern ein DataFrame mit 1 Spalte. Ich kann nicht damit rechnen, dass die Anwendungsfunktion in diesem Fall nicht einfach eine Serie zurückgeben würde. Wie kann ich das umgehen? Ich kann nicht das übliche tolist()
verwenden, da diese Methode für einen DataFrame nicht verfügbar ist. Irgendeine Einsicht in die allgemeine Intuition der Pandas, die mich auf diesen Fehler aufmerksam gemacht haben? Ich habe erfolgreich apply
oft vorher verwendet und in der Vergangenheit gab es den erwarteten Typ zurück.
Edit:train.info()
(irrelevant Spalten entfernt Kürze halber/privacy):
<class 'pandas.core.frame.DataFrame'>
Int64Index: 92529 entries, 0 to 92528
Data columns (total 93 columns):
Type 92529 non-null object
LocationID 92529 non-null object
UserID 92529 non-null int64
dtypes: float64(6), int64(55), object(32)
memory usage: 66.4+ MB
None
Bitte senden Sie 'train.head(). Todict ('list')' und 'train.info()' so können wir (hoffentlich) das Problem reproduzieren. – unutbu
@unutbu Ersteres verursachte einen'AttributeError: 'DataFrame'-Objekt hat kein Attribut' Todd'', aber ich habe die Frage bearbeitet, um die Letzteren einzuschließen. Vielen Dank. – src
Entschuldigung - das hätte 'train.head(). To_dict ('list')' (mit einem Unterstrich) lesen sollen. – unutbu