я використовую read_csv
і хочете відмовитися від деяких рядків, які мають певне значення, я можу зробити це добре в окремих рядках, але коли я хочу викликати обидві рядки, він повертає NoneType
помилка
Мій перший код:
census_df = pd.read_csv("census.csv")
census_df.drop(census_df["SUMLEV"] == 40, inplace=True)
І я хочу зробити:
census_df = (pd.read_csv("census.csv")
.drop(census_df["SUMLEV"] == 40, inplace=True))
Повернуто помилка:
TypeError: Об'єкт "NoneType" не є індексною
Відповіді:
1 для відповіді № 1Думаю, вам потрібно заїхати index
від boolean indexing
:
census_df = ( pd.read_csv("census.csv").drop(census_df[(census_df["SUMLEV"] == 40)].index) )
Але краще це використовувати boolean indexing
:
census_df = pd.read_csv("census.csv")
census_df = census_df[census_df["SUMLEV"] != 40]
1 для відповіді № 2
Причина в тому, що падіння повертає None, якщо воно єдоручено виконати в місці (як запропонував оператор inplace). Зніміть оператора (який приносить деяку вартість пам'яті та обробку) або виконайте його у два рядки.