Ich denke, dies ist eine rudimentäre Frage, aber ich bin sehr neu darin und konnte sie einfach nicht knacken / die Antwort finden.
Letztendlich versuche ich hier, eindeutige Werte für eine bestimmte Spalte zu zählen und dann zu bestimmen, welche dieser eindeutigen Werte mehr als einen eindeutigen Wert in einer übereinstimmenden Spalte haben.
Für diese Daten versuche ich zu bestimmen, "wer" "mehr als eine Quittung" für alle Einkäufe hat, und dann die gleichen Informationen basierend auf jeder Produktkategorie zu ermitteln.
Mein bisheriger Ansatz:
Wir haben einen Datensatz wie diesen:
receipt,name,etc,category
1,george,xxx,fish
1,george,xxx,cat
2,george,xxx,fish
3,bill,xxx,fish
3,bill,xxx,dog
4,jill,xxx,cat
5,bill,xxx,cat
5,bill,xxx,cat
5,bill,xxx,dog
6,george,xxx,fish
Dann kann ich das machen:
df.set_index(['name','receipt'])
Und umso interessanter
etc category
name receipt
george 1 xxx fish
1 xxx cat
2 xxx fish
bill 3 xxx fish
3 xxx dog
jill 4 xxx cat
bill 5 xxx cat
5 xxx cat
5 xxx dog
george 6 xxx fish
Zu diesem Zeitpunkt scheint es mir einfach zu sein, mit den Daten zu arbeiten, aber ich habe es nicht herausgefunden.
Eine Sache, die mich interessiert, ist, dass wenn ich die Daten vor der Indizierung nach Namen sortiere, die Daten nach Namen gruppiert angezeigt werden. In beiden Fällen ist der Index derselbe, daher weiß ich nicht, wie ich nach der Indizierung mit der Darstellung der Daten spielen soll.
Es ist einfach, die Daten nach Kategorien zu finden
>>> orders.loc[orders['category'] == 'fish']
etc category
name receipt
george 1 xxx fish
2 xxx fish
bill 3 xxx fish
george 6 xxx fish
Aber was ich nicht herausfinden kann, ist, wie man Pandas sagt "Finde mir die Liste der Namen, die mehr als eine Quittung haben".
Kleinere Fragen:
- Was ist der "Pandas-Weg", um die Länge des Namensteils des Index zu ermitteln? Ich nehme an, ich könnte einfach die
name
Spalte in einen Satz verwandeln und die Länge davon ermitteln. Aber ich bin neugierig auf Indizes.
Bearbeiten / Aktualisieren
Danke für diese Antworten! Hier ist eine Klarstellung, wonach ich suche:
Ich versuche "Stammkunden" zu finden: Personen mit mehr als einer Quittung.
Mein Satz aller Kunden wäre also:
names: ['george','bill','jill'], ratio: 1.0
Meine Stammkunden:
names: ['george','bill'], ratio 0.66
Alle "Fisch" -Kunden:
names: ['george','bill'], ratio: 0.666
Meine Stammkunden:
names: ['george'], ratio: 0.333
Ich denke, die Beispiele sehen hilfreich aus, aber Sie können gerne etwas hinzufügen.