2017-01-12 6 views
0
import pandas as pd 

df = pd.DataFrame([[1,2,3],[1,5,9],[2,1,5],[9,2,8]], index = [1,2,3], columns = ['A','B','C', 'D']) 

Предположим, у меня есть dataframe, например df. Я хочу сравнить все строки в df для , если df ['A']> df ['B'] и df ['B'] < df ['C'] и df ['B']> df [' D '], , тогда если true df [' E '] =' yes 'или' no 'для false. спасибо большоепроверка столбцов данных (ряд за строкой) для нескольких условий, если

ответ

0

Ваш информационный кадр не воспроизводится, поэтому проверьте наличие ошибки. Здесь я создал несколько аналогичный файл данных.

df = pd.DataFrame({'A': [1,2,10], 'B': [1,5,5], 'C': [2,1,7], 'D': [9,2,4]}) 

Вы можете добавить столбец E, как это:

df['E'] = (df['A']>df['B']) & (df['B']< df['C']) & (df['B']>df['D']) 

Это дает желаемый результат.

+0

Спасибо @ Вайшали за ответ. Для моего случая мне нужно сделать это с помощью оператора if (для большего анализа). Когда я пробовал это --- импортировать pandas как pd df = pd.DataFrame ({'A': [1,2,10], 'B': [1,5,5], 'C': [2 , 1,7], 'D': [9,2,4]}) if (df ['A']> df ['B']) & (df ['B'] df [' D ']): df [' E '] =' yes '--- это дает мне ValueError: значение истинности серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all(). Какие-либо предложения? –

+0

Решение является условным выражением без использования if. Ошибка значения, которую вы получаете, состоит в том, что df ['E'] - это серия pandas, и вы не можете присвоить значение таким сериям – Vaishali

+0

Если вам нужно явно использовать инструкцию if, то это решение, хотя я бы не рекомендовал его: E = [] для i в диапазоне (len (df)): if ((df ['A'] [i]> df ['B'] [i]) & (df ['B'] [i ] df ['D'] [i])): E.append ('Да') else: E .append ('Нет') – Vaishali

 Смежные вопросы

  • Нет связанных вопросов^_^