Если условия с фреймом данных Python Panda и сюжет с Matplotlib - PullRequest
0 голосов
/ 04 марта 2019

Я хотел бы использовать какие-либо условия if для построения графика, только если значение определенного столбца достигает определенного значения.

Скажем, в приведенном ниже примере я хотел бы построить график только в том случае, если значениецикл == 2.

import pandas as pd
import matplotlib.pyplot as plt 

data = [('cycle',[1,1,2,2,3,3,4,4]),
         ('A',[0.1,0.5,0.2,0.6,0.15,0.43,0.13,0.59]),
         ('B',[ 500, 600, 510,580,512,575,499,598]),
         ]
df = pd.DataFrame.from_items(data)
#print(df)
x = df['A']
y = df['B']

if df['cycle']==2:
    plt.plot(x,y)

, если я сделаю это, я получу ошибку fowling: ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

До сих пор мне не удавалось найти способ решения проблемы.

Я благодарен за любую помощь в решении этой проблемы.Хорошего дня.

1 Ответ

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

В этой строке if df['cycle']==2 df['cycle'] возвращает серию панд.Когда вы сравниваете это с 2, pandas не знает, хотите ли вы сравнить поэлементно или всю серию, это неоднозначно.Вместо этого вы можете фильтровать таблицу в зависимости от вашего состояния или фильтровать отдельные серии.Например:

df = pd.DataFrame.from_items(data)
#print(df)
x = df.loc[df['cycle'] == 2, 'A']
y = df.loc[df['cycle'] == 2, 'B']

plt.plot(x,y)

Здесь вы используете df['cycle'] в качестве логического ряда для индексации в исходном фрейме данных и возврата только тех элементов, где cycle равно 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...