У меня есть фрейм данных со следующей настройкой:
a c g s
Ind b d t d
0 11 12 22 33
1 13 14 44 101
Цель - получить входные данные от пользователя через GUI, сохранить входные данные в виде списка и сравнить его со списком заголовков в кадр данных. Если они совпадают, то построите столбец там, где они совпадают (столбец будет осью Y, а индекс будет осью X).
Например, если пользователь выберет [('c','d')]
, я бы как код для построения этого столбца. Вот что у меня есть.
df = pd.read_csv('foo.csv',sep=r'\s*,\s*', encoding='ascii', engine='python')
header_list = [('a','b'),('c','d'),('g','t'),('s','d')]
user_Input_list = [('c','d')]
sub_list = []
for contents in header_list:
for contents2 in user_Input_list:
if contents == contents2:
ax = df.reset_index().plot(x='Ind', y=x[header_list], kind='bar')
for p in ax.patches:
ax.annotate('{:.2E}'.format(Decimal(str(p.get_height()))),
(p.get_x(),p.get_height()))
plt.tight_layout()
plt.show()
Я думаю, что проблема заключается в том, как я пытаюсь выбрать ось Y с помощью y=x[header_list]
.
Редактировать
Вот сообщение об ошибке, которое я получаю при запуске вышеуказанного кода.
Traceback (most recent call last):
File "/home/JM9/PycharmProjects/subfolder/subfolder.py", line 360, in <module>
ax = x.reset_index().plot(x='Ind', y=x[header_list], kind='bar')
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/plotting/_core.py", line 780, in __call__
data = data[y].copy()
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/core/frame.py", line 2982, in __getitem__
return self._getitem_frame(key)
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/core/frame.py", line 3081, in _getitem_frame
raise ValueError("Must pass DataFrame with boolean values only")
ValueError: Must pass DataFrame with boolean values only