ich eine Pandas DataFrame
haben, die eine Version Test beschreibt und sieht wie folgt aus:Pandas relabel Reihen eindeutige Werte innerhalb eines groupby zu erkennen
MailingName EmailSubject MailingID
Promo_v1s1 Hello! A8FEFE
Promo_v1s2 Line 2 A8FEFE
Promo_v2s1 Line 2 A8FEFE
Promo_v2s2 Yo! A8FEFE
Promo_v2S3 Hello! A8FEFE
deal_v2s1 Line 2 bbb
deal_v2s2 Yo! bbb
deal_v2ss Hello bbb
Die gleiche Mailing-Aktion, mit anderen Version Tests können durch die MailingID
identifiziert werden (Das wäre der groupby
Begriff für mehr Eigenschaften).
Die Namenskonvention für MailingName
für dies ist, dass v + a number
die E-Mail-Körper-Version gibt, das getestet wurde, und s + a number
zeigt die E-Mail-Betreffzeile, die in einer bestimmten Combo getestet wurden. Die Konvention ist jedoch nicht in dem Sinne hilfreich, dass die Betreffzeile von v1s1
nicht notwendigerweise dieselbe ist wie eine Betreffzeile in v2s2
, selbst wenn die mailingID geteilt wird.
Ich möchte, innerhalb jeder MailingID
Gruppe, haben alle E-Mail Betreffzeilen, die tatsächlich identisch sind, haben die gleiche 'Betreff Zeile Versionsnummer'. So würde Ich mag eine andere Spalte erstellen, die in so etwas wie dies zur Folge hätte:
MailingName EmailSubject MailingID TrueEmailVersionNumber
Promo_v1s1 Hello! A8FEFE 1
Promo_v1s2 Line 2 A8FEFE 2
Promo_v2s1 Line 2 A8FEFE 2
Promo_v2s2 Yo! A8FEFE 3
Promo_v2S3 Hello! A8FEFE 1
deal_v2s1 Line 2 bbb 1
deal_v2s2 Yo! bbb 2
deal_v2ss Hello bbb 3
Grundsätzlich mag ich eindeutige Beschriftungen hinzufügen, pro Gruppe, an eine Säule. Wie kann ich das mit Pandas
tun?
Ich hatte eine Idee, einen Starts in einer klobigen Quere wie so:
def processThis(x):
uni = list(set(x))
keys = {x_i:uni.index(x_i) for x_i in x}
return keys
ab_data.groupby('mailing_id')['subject'].apply(processThis)
Aber das brachte eigentlich keine Liste der Wörterbücher zurück, so auch mein erster Schritt ist ein Rohrkrepierer. Danke für jeden Hinweis!