Ich habe Datenrahmen unten gezeigt. df:Wie erstellt man eine neue Spalte, indem man zwei Spalten in demselben Datenrahmen mit Python vergleicht?
col_1 col_2
EDU facebook
EDU google
EDU google_usa
EDU tabula
EDU xyz
EDU abc
IAR facebook
IAR google
Wenn col_1
hat 'EDU' und col_2 hat 'facebook', 'google'
new_col gleiche Zeichenfolge dh facebook and google
haben sollte, wenn col_2 enthält 'google_usa',tabula'
new_col sollte 'gusa' enthält und wenn col_2 andere Saiten hat, sollte ne_col haben others
in derselbe Datenrahmen. Wenn col_1
hat 'IAR'und col_2
hat 'facebook'
new_col sollte Facebook haben und für jede andere Zeichenfolge in der col_2
sollte es 'other'
in demselben Datenrahmen enthalten.
Erwarteter Ausgang:
col_1 col_2 new_col
EDU facebook facebook
EDU google google
EDU google_usa gusa
EDU tabula gusa
EDU xyz others
EDU abc others
IAR facebook facebook
IAR google others
ich unten Code versucht, aber nicht out.Please helfen Sie mir in dieser Hinsicht gearbeitet. danke im voraus.
if df['col_1'].str.contains('EDU').any():
df['new_col'] = ['facebook' if 'facebook' in x else
'google' if 'google' == x else
'gcusa_tb' if 'taboola' in x else
'gcusa_tb' if 'google_cusa' in x else
'Others' for x in df['col_2']]
Einfach diese für zukünftige Referenz für andere Stolpern über diesen Beitrag: Dies funktioniert für das Beispiel perfekt. Aber verschachtelte 'np.where' sind immer schwer für andere Leute zu folgen. Leistung und Effizienz sind großartig, aber die Lesbarkeit kann mangelhaft sein. – MattR
@MattR auch für die Nachwelt, dieses Problem dreht sich alles um verschachtelt, wenn, dann, sonst. Wenn Lesbarkeit eine Priorität ist, können Sie das 'np.where' mit einer schöneren Funktion umhüllen. – piRSquared