У меня есть столбец с именем HousSize и столбец Independent. Я хочу, чтобы создать переменную, которая равна 1, если HouseholdSize равно 1 и Independent не равен 1. Мой текущий код выглядит следующим образом:Создание переменной с использованием критериев из нескольких столбцов (PANDAS)
df["HH1flag"] = df.where((df.HouseholdSize ==1) & (df.Independent != 1).notnull().astype(int))
HH1flag = df[df.HH1flag == 1]
pd.DataFrame(HH1flag, columns=["LocIdent","HouseholdSize","Independent"]).to_csv(Targcsv, mode='ab')
Я получаю следующее сообщение об ошибке: AttributeError: «поплавок» объект имеет no attribute 'all'
Редактировать: С некоторой помощью от EdChum я добавляю немного больше информации по этому вопросу. Упрощенная версия моего пересмотренного кода выглядит следующим образом:
import pandas as pd
from pandas import *
import csv
FileName='HouseholdSizeTest.xlsx'
data=pd.read_excel(FileName,'Sheet1')
df=pd.DataFrame(data)
Targcsv=('target.csv')
HH1Text= [['Table C.1 HouseholdSize Check 1']]
with open(Targcsv,'ab') as f:
titles=csv.writer(f)
titles.writerow([])
titles.writerows(HH1Text)
titles.writerow([])
df["HH1flag"] = df[(df.HouseholdSize ==1) & (df.Independent != 1)].notnull().astype(int)
HH1flag = df[df.HH1flag == 1]
pd.DataFrame(HH1flag, columns=["LocIdent","HouseholdSize","Independent"]).to_csv(Targcsv, mode='ab')
я получаю новую ошибку, для той же линии. Ошибка ValueError: неправильное количество элементов, переданных 3, размещение подразумевает 1. Я изо всех сил пытаюсь правильно вставить данные в это редактирование, но представьте три случая. первый с Independent = 1 и HousSize = 1, второй с Independent = 0 и HousSize = 3, а третий с Independent = 47 и HousSize = 1. Для третьего случая, HH1flag должен быть равен 1.
Вы делаете это правильно? Вы не указали, какая строка выдает ошибку, я предполагаю, что это первая строка, поскольку она выглядит странно для меня, вы хотите этого вместо этого: 'df [" HH1flag "] = df.where ((df.HouseholdSize == 1) & (df.Independent! = 1)). Notnull(). Astype (int) '? – EdChum
Привет, EdChum. Извините, что не указав, это первая строка, которая выдает ошибку. Я попробовал вставить код, который у вас есть, в свой комментарий в мой код, и я получил ту же ошибку. Любые мысли о том, что может быть причиной этого? – lbug
Можете ли вы опубликовать исходные данные и код для создания df, чтобы мы могли воспроизвести вашу ошибку, спасибо – EdChum