Byłem w tym przez cały ranek i powoli składałem razem. Ale dla mojego życia nie mogę wymyślić, jak użyć funkcji .str.startswith() w Pandach.Jak usunąć wiersze, które nie zaczynają się od "x" w Pandach, lub zachować wiersze zaczynające się od "x"
My XLSX kalkulacyjny jest następujący
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...
Więc jestem importowania go jako ramki danych, czyszczenie nagłówek tak, że nie ma miejsca i takie, następnie chcę usunąć wszystkie wiersze nie zaczynające się od ' 1. " (lub zachowaj wiersze zaczynające się od "1.") i usuń wszystkie pozostałe. W tym krótkim przykładzie usuń cały wpis "Jane Doe", ponieważ jej numer telefonu zaczyna się od "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')
Najbliżej mam zdobyć, i przez to mam na myśli tylko linia byłem w stanie wykonać bez irytujących tracebacks i innych błędów jest:
df['registrant_phone'] = df['registrant_phone'].str.startswith('1')
Ale wszystko, co robi, jest przekonwertować cały telefon wartości dla „NaN”, zachowuje wszystkie wiersze i wszystko tak jak pokazano poniżej:
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
Przeszukałem zbyt wiele miejsca, nawet starają się liście, próbowałem różnych wersji df.drop i po prostu nie może niczego zrozumieć. Gdzie mogę się stąd udać?
chcesz 'df = df .loc [df ['registrant_phone']. str.startswith ('1')] ' – EdChum