Sono stato a questa mattina per tutto e ho lentamente messo insieme le cose. Ma per la vita di me non riesco a capire come usare la funzione .str.startswith() in Panda.Come eliminare le righe che non iniziano con 'x' in Panda o mantenere le righe che iniziano con 'x'
mio XLSX fogli di calcolo è il seguente
1 Name, Registration Date, Phone number
2 John Doe, 2015-11-20T19:54:45Z, 1.1112223333
3 Jane Doe, 2015-11-20T20:44:26Z, 65.1112223333
etc...
Così sto importarlo come un frame di dati, la pulizia l'intestazione in modo che non ci sono spazi e simili, allora voglio eliminare tutte le righe che non iniziano con ' 1.' (o mantenere le righe che iniziano con '1') e cancellare tutti gli altri. Quindi, in questo breve esempio, elimina l'intera voce "Jane Doe" poiché il suo numero di telefono inizia con "65".
import pandas as pd
df = pd.read_excel('testingpanda.xlsx', sheetname = 'Export 1')
def colHeaderCleaner():
cols = df.columns
cols = cols.map(lambda x: x.replace(' ', '_') if isinstance(x, (str, unicode)) else x)
df.columns = cols
df.columns = [x.lower() for x in df.columns]
colHeaderCleaner()
#by default it sets the values in 'registrant_phone' as float64, so this is fixing that...
df['registrant_phone'] = df['registrant_phone'].astype('object')
Il più vicino che ho ottenuto, e con questo intendo l'unica linea sono stato in grado di eseguire senza traceback fastidiosi e altri errori è:
df['registrant_phone'] = df['registrant_phone'].str.startswith('1')
Ma tutto ciò che fa è di convertire tutto il telefono i valori per 'NaN', mantiene tutte le righe e tutto come illustrato di seguito:
print df
[output] name, registration_date, phone_number
[output] John Doe, 2015-11-20T19:54:45Z, NaN
[output] Jane Doe, 2015-11-20T20:44:26Z, NaN
ho cercato troppi posti da provare, anche alla lista, ho provato diverse versioni di df.drop e proprio non riesco a capire niente. Dove vado da qui?
si desidera 'df = df .loc [df ['registrant_phone']. str.startswith ('1')] ' – EdChum