Просит пользователя отобразить два столбца в файле csv, не вводя полное имя столбца?

#python #pandas

#python #pandas

Вопрос:

Мой текущий код:

 import pandas as pd

df = pd.DataFrame.from_csv('data.csv',index_col=False)


while True:
     print (df)
     print ('Select X-Axis')
     xaxis = input()
     print ('Select Y-Axis')
     yaxis = input()
     break
 
df.plot(x= xaxis, y= yaxis)  

Мой текущий работает, только если пользователь вводит полное имя столбца. Однако некоторые столбцы большие. Я хочу упростить задачу для моего пользователя, чтобы, если он введет часть имени столбца, это сработало. Или, если каким-то образом я могу присвоить каждому имени столбца номер, не просматривая вручную каждый столбец и не присваивая номер. Затем я могу показать список пользователю, и он вводит число, которое он хотел бы отобразить.

Комментарии:

1. Вы пробовали кодировать свое собственное предложение? Попробуйте сначала и вернитесь, если у вас не получится. Это не бесплатный сервис кодирования.

2. @JulienBernu Хорошо, если я знаю, с чего начать, мне бы понравился мой текущий код. Именно поэтому я попросил здесь некоторую помощь для направления. Я никогда никого не просил писать весь мой код.

Ответ №1:

Один из способов сделать это — использовать filter в pandas для этой цели.

 df.filter(regex=(yaxis))
  

Он отобразит все столбцы, соответствующие этой подстроке yaxis

вот пример.

 A = { 'Name': [ 'John', 'Andrew', 'Smith'] , 'Age' : [20,23,42]}

A
Out[19]: {'Age': [20, 23, 42], 'Name': ['John', 'Andrew', 'Smith']}

df = pd.DataFrame(A)

df
Out[21]: 
   Age    Name
0   20    John
1   23  Andrew
2   42   Smith

df.filter(regex=('Na'))
Out[22]: 
     Name
0    John
1  Andrew
2   Smith

df.filter(regex=('e'))
Out[23]: 
   Age    Name
0   20    John
1   23  Andrew
2   42   Smith
  

Комментарии:

1. Извините, я немного запутался в том, что вы подразумеваете под этим. Не могли бы вы уточнить?

2. Всякий раз, когда я пытаюсь отобразить его на графике, сбой окна графика заставляет меня перезапускаться. Итак, я выполнил print(df.fliter(regex=(‘yaxis’)), Чтобы посмотреть, что в нем, и я получаю Index: [0,1,2,3,4 ….. и так далее.

3. используйте df.filter(regex=(yaxis)).head(10), чтобы проверить только первые 10 строк и проверить свой вывод

4. Я ненадолго оставил график, и он попытался отобразить все с выбранной мной осью x