używam read_csv
i chcę upuścić kilka wierszy, które mają określoną wartość, mógłbym zrobić to dobrze w osobnych wierszach, ale gdy chcę wywołać obie w tej samej linii, zwraca NoneType
błąd.
Mój pierwszy kod:
census_df = pd.read_csv("census.csv")
census_df.drop(census_df["SUMLEV"] == 40, inplace=True)
I chcę to zrobić:
census_df = (pd.read_csv("census.csv")
.drop(census_df["SUMLEV"] == 40, inplace=True))
Zwrócił błąd:
TypeError: Obiekt „NoneType” nie podlega subskrypcji
Odpowiedzi:
1 dla odpowiedzi № 1Myślę, że musisz wpaść index
od boolean indexing
:
census_df = ( pd.read_csv("census.csv").drop(census_df[(census_df["SUMLEV"] == 40)].index) )
Ale lepsze jest użycie boolean indexing
:
census_df = pd.read_csv("census.csv")
census_df = census_df[census_df["SUMLEV"] != 40]
1 dla odpowiedzi nr 2
Powodem jest to, że drop zwraca None, jeśli jestpolecony do wykonania na miejscu (jak sugeruje operator lokalny). Usuń operatora (który pociąga za sobą trochę pamięci i kosztów przetwarzania) lub zrób to w dwóch liniach.