Pandas Read Excel функция конвертировать индекс в список - PullRequest
0 голосов
/ 18 сентября 2018
## Summary: Analyze the data in each sheet and get the result
def analyze_data(project, sheet):
    print(project_dict[project],'****'+sheet)

    ## Get data with specific finding type in validation sheet
    sheet_df = pd.read_excel(project_dict[project],sheet, na_values=['NA'])
    print(sheet_df['Feedback Report']=='S.No')
    # Get index of tables
    242 idx = sheet_df[sheet_df['Feedback Report']=='S.No'].index.tolist()[0]
    243 head = idx - 1

    245 header_df = sheet_df.iloc[0:head,:]
    246 sheet_df = sheet_df.iloc[idx:,:]


    ## Replace the header
    header = sheet_df.iloc[0]
    sheet_df.columns = header.tolist()
    sheet_df = sheet_df[1:]

    ####################################
    ## Get data from the time period 

Приведенный выше код написан не мной, и я должен сделать для него полный исполняемый файл Windows.Я не могу понять, что код пытается сделать в строке 242.

Exception in Tkinter callback
    Traceback (most recent call last):
      File 37-32\lib\tkinter\__init__.py", line 1702, in __call__
        return self.func(*args)
      File QA_Review_Reporting.py", line 751, in sync
        report.read(project_dict)
      File reports.py", line 705, in read
        process()
      File reports.py", line 749, in process
        get_valid_type(project)
      File reports.py", line 185, in get_valid_type
        counts = analyze_data(project, item)
      File reports.py", line 242, in analyze_data
        idx = sheet_df[sheet_df['Feedback Report']=='S.No'].index.tolist()[0]
    IndexError: list index out of range

1 Ответ

0 голосов
/ 18 сентября 2018

Как я упоминал в своем комментарии, строка 242 фильтрует фрейм данных sheet_df по строкам, в которых столбец 'Feedback Report' имеет значение 'S.No'.Затем он возвращает соответствующий индекс отфильтрованного sheet_df кадра данных в список и получает первый элемент в этом списке с помощью [0].

Например:

sheet_df = pd.DataFrame([['No', 1, 2, 3], ['S.No', 4, 5, 6], ['S.No', 7, 8, 9], ['Yes', 10, 11, 12]], columns=['Feedback Report', 'Val 1', 'Val 2', 'Val 3'])

, что приводит к:

  Feedback Report  Val 1  Val 2  Val 3
0              No      1      2      3
1            S.No      4      5      6
2            S.No      7      8      9
3             Yes     10     11     12

Фильтрация кадра данных с помощью sheet_df[sheet_df['Feedback Report']=='S.No'] вернет:

  Feedback Report  Val 1  Val 2  Val 3
1            S.No      4      5      6
2            S.No      7      8      9

Затем, взяв индекс и отправив tolist():

[1, 2]

Наконец,Возьмите первый элемент через [0] для возврата:

1

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