2017-03-09 8 views
1

Ich bin Anfänger noch zu Python, benachbarte Zelle mit über Zellen von benachbarter SpalteSpalt hinzufügen mit jeder Zelle

Mein Datenrahmen hat zwei Spalten und viele Zeilen zu vergleichen:

Customer_Acquired_Date|Customer_mobile_number 
1/20/2017|100000001 
2/2/2017|100000002 
2/12/2017|100000001 
2/23/2017|100000004 
3/1/2017|100000005 
3/7/2017|100000004 

ich hinzufügen mag Spalte "RepeatOrNew" Jede Zelle in dieser neuen Spalte sucht nach Mobilfunknummer des Kunden in den obigen Zellen der benachbarten Spalte. Wenn es existiert, tippe "Wiederholen", wenn es nicht existiert, dann tippe "Neu".

Ausgang:

Customer_Acquired_Date|Customer_mobile_number|RepeatOrNew 
1/20/2017|100000001|New 
2/2/2017|100000002|New 
2/12/2017|100000001|Repeat 
2/23/2017|100000004|New 
3/1/2017|100000005|New 
3/7/2017|100000004|Repeat 

Ich bin völlig leer wo ich anfangen soll. Bitte helfen.

Danke, Ninad.

Antwort

0

Sie können eine Kombination von grouping verwenden, die cumcount Methode eines GroupBy und where der numpy Funktion die gewünschte Ausgabe zu erhalten. Folgendes sollte einen angemessenen Ausgangspunkt dar:

import pandas as pd 
import numpy as np 
from io import StringIO 


data_stream = StringIO("""Customer_Acquired_Date|Customer_mobile_number 
1/20/2017|100000001 
2/2/2017|100000002 
2/12/2017|100000001 
2/23/2017|100000004 
3/1/2017|100000005 
3/7/2017|100000004""") 

customers = pd.read_table(data_stream, sep="|", header=0) 


counter = customers.groupby('Customer_mobile_number').cumcount() 
customers['RepeatOrNew'] = np.where(counter == 0, 'New','Repeat') 

Oder ein Einzeiler:

customers['RepeatOrNew'] = customers.groupby('Customer_mobile_number').cumcount().apply(lambda x: 'New' if x == 0 else 'Repeat') 

ergeben sollte so etwas wie:

Customer_Acquired_Date Customer_mobile_number RepeatOrNew 
0    1/20/2017    100000001   New 
1    2/2/2017    100000002   New 
2    2/12/2017    100000001  Repeat 
3    2/23/2017    100000004   New 
4    3/1/2017    100000005   New 
5    3/7/2017    100000004  Repeat 

Ich hoffe, dies als nützlich erweist.

Verwandte Themen