Ошибка при создании переменной на Pandas - передано неверное количество элементов - PullRequest
0 голосов
/ 19 марта 2019

Я получаю сообщение об ошибке: ValueError: Неверное количество пройденных элементов 3, размещение подразумевает 1, и я изо всех сил пытаюсь выяснить, где и как я могу начать решать проблему.

Я не совсем понимаю значение ошибки; что затрудняет мне поиск и устранение неисправностей. Я также включил блок кода, который вызывает ошибку в моем ноутбуке Jupyter.

У меня проблемы с созданием переменной на фрейме данных в соответствии со многими условиями.

Я хочу добавить столбец с двоичной переменной «Да» / «Нет» в соответствии с ответом при определенных условиях.

Мой фрейм данных построен из файла CSV с 11 столбцами.

Я пытаюсь этот код:

import pandas as pd

import numpy as np

df['yes/no'] = np.where(df[(df['var_1'].isin(list)) & (df['var2'] >= '2000-01-01') & (df['var_2'] <= '2000-12-31') & (df['var_3'] >0) & (df['var_4'] =='OK')],'yes','No')

Я думаю, что проблема связана с созданием переменной, потому что код верен без условия np.where.

Но когда я хочу создать переменную с этими условиями и выполнить код, отображается ошибка:

Wrong number of items passed 12, placement implies 1

Вы знаете, что означает эта ошибка и как ее исправить?

Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

np.where возвращает массив размером только с количества найденных совпадений.Если вы хотите добавить столбец к вашему df, вам нужна серия того же размера, с True или False в зависимости от условия.Для этого просто используйте голое условие:

df['yes/no'] = 'No'
rows = (df['var_1'].isin(list)) & 
    (df['var2'] >= '2000-01-01') & 
    (df['var_2'] <= '2000-12-31') & 
    (df['var_3'] >0) & 
     (df['var_4'] =='OK')
df.loc[rows, 'yes/no'] = 'yes'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...