Как извлечь значения dataframe для формирования массива?

У меня есть лист Excel, который я пытаюсь обработать с помощью Python как часть процесса ETL.

У меня есть лист Excel с кучей данных. Но столбцы не являются первой строкой на листе Excel, который представляет собой кучу проблем JIRA.

файл.xlsb

time stamp row.
Export  x number of issue
 Project | Summary | Creator | Status | Description | Key  (and a bunch of other fields)
data row 1 
data row 2
etc.... 

Я могу читать данные с помощью простой Panda; однако мне нужны только определенные данные, такие как сводка, статус, ключ. Как мне получить эти данные?

import pandas as pd
df = pd.read_excel(imported_file, skiprows=2)

Когда я пытаюсь составить список данных Python, я получаю ключевую ошибку:

test.py", line 3812, in get_loc
    raise KeyError(key) from err
KeyError: 'Key'

Что у меня есть на данный момент:

import pandas as pd
df = pd.read_excel(imported_file, skiprows=2)
print(df)

issuesArray = []
for index, row in df.iterrows():
  issuesArray.append({
     ' Ticket #: ': row['Key'],
     ' Issue Type: ': row['Issue Type'],
     ' Issue Created: ': row['Created'],
     ' Status: ': row['Status'],
     ' Summary: ': row['Summary'],
     ' Reporter: ': row['Reporter'],
     ' Project: ': row['Project'],
     ' Body: ': row['Description']
  })
    
for entryItem in issuesArray:
  print ("---")
  print (entryItem)
  print ("---")

Я попытался сослаться на строку df, используя строку столбца и целое число, оба из которых приводят к ключевой ошибке. По сути, я ищу список элементов dict, которыми я могу легко управлять в Python. У кого-нибудь есть идеи, как это сделать?

Убедитесь, что имена столбцов соответствуют print(df.columns).

Michael Cao 05.08.2024 18:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Чтобы обработать лист Excel и извлечь определенные данные, убедитесь, что имена столбцов, на которые вы ссылаетесь в своем коде, точно совпадают с именами в листе Excel. Учитывая, что столбцы не являются первой строкой, пропуск строк с помощью skiprows=2 является правильным, при условии, что ваши столбцы начинаются с третьей строки.

Вот подробное решение:

  1. Прочтите лист Excel с правильным количеством строк, которые нужно пропустить.
  2. Проверьте имена столбцов после прочтения данных.
  3. Извлеките необходимые данные в список словарей.

Пошаговое решение

  1. Прочтите файл Excel и проверьте DataFrame, чтобы убедиться, что столбцы загружены правильно:

    import pandas as pd
    
    # Read the Excel file
    df = pd.read_excel('file.xlsb', skiprows=2)
    
    # Print the columns to verify correct names
    print(df.columns)
    
  2. Обновите код, чтобы он соответствовал именам столбцов в соответствии с выводом на печать:

    import pandas as pd
    
    # Read the Excel file
    df = pd.read_excel('file.xlsb', skiprows=2)
    
    # Assuming columns names are as follows:
    required_columns = ['Key', 'Issue Type', 'Created', 'Status', 'Summary', 'Reporter', 'Project', 'Description']
    
    # Filter the DataFrame to include only the required columns
    df_filtered = df[required_columns]
    
    # Create a list of dictionaries
    issuesArray = df_filtered.to_dict(orient='records')
    
    # Print the list of dictionaries
    for entryItem in issuesArray:
        print("---")
        print(entryItem)
        print("---")
    
  3. Обработка возможных ошибок KeyError, если столбцы отсутствуют или написаны с ошибками:

    import pandas as pd
    
    # Read the Excel file
    df = pd.read_excel('file.xlsb', skiprows=2)
    
    # Print the columns to verify correct names
    print(df.columns)
    
    required_columns = ['Key', 'Issue Type', 'Created', 'Status', 'Summary', 'Reporter', 'Project', 'Description']
    
    # Ensure all required columns are present
    for col in required_columns:
        if col not in df.columns:
            print(f"Column '{col}' not found in the Excel sheet")
    
    # Filter the DataFrame to include only the required columns
    df_filtered = df[required_columns]
    
    # Create a list of dictionaries
    issuesArray = df_filtered.to_dict(orient='records')
    
    # Print the list of dictionaries
    for entryItem in issuesArray:
        print("---")
        print(entryItem)
        print("---")
    

Примечания

  • Убедитесь, что имена столбцов в файле Excel точно соответствуют строкам, которые вы используете в коде (например, с учетом регистра, дополнительных пробелов).
  • Если столбцы имеют разные имена или дополнительные пробелы, возможно, вам придется соответствующим образом изменить имена столбцов.

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

Привет, Никет! Спасибо за информацию, это было очень полезно. Проблема, с которой я столкнулся, заключалась в том, что клоум не забирался после импорта. ``` 'Безымянный: 3', 'Безымянный: 4', 'Безымянный: 5', 'Безымянный: 6', 'Безымянный: 7', 'Безымянный: 8', 'Безымянный: 9', ... 'Безымянный : 187', 'Безымянный: 188', 'Безымянный: 189', 'Безымянный: 190', 'Безымянный: 191', 'Безымянный: 192', 'Безымянный: 193', 'Безымянный: 194', 'Безымянный: 195 ', 'Unnamed: 196'], ```, в документе Excel на самом деле более 200 столбцов, но мне нужно только семь или около того..... Командная команда df.columns указала мне на это.... Спасибо за помощь! та, Х

Mr. E 06.08.2024 07:08

У меня это работает с помощью ```` df = pd.read_excel(importFile,skiprows=2) df2 = pd.DataFrame(df.values[1:], columns=df.iloc[0]) print(df2.columns) печать(df2) ```

Mr. E 06.08.2024 07:23

На основе ответа Никета....

if os.path.exists(importFile):
  print("Import File located @ " + str(importFile))
else:
  print("File does not exist!!!!")
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 2000)
pd.set_option('display.float_format', '{:20,.2f}'.format)
pd.set_option('display.max_colwidth', None)

pd.reset_option('display.max_rows')
pd.reset_option('display.max_columns')
pd.reset_option('display.width')
pd.reset_option('display.float_format')
pd.reset_option('display.max_colwidth')
    
df = pd.read_excel(importFile, skiprows=2)
df2 = pd.DataFrame(df.values[1:], columns=df.iloc[0])
    
required_columns = ['Key', 'Issue Type', 'Created', 'Status', 'Summary', 'Reporter', 'Project', 'Description']

# Ensure all required columns are present
for col in required_columns:
  if col not in df2.columns:
    print(f"Column '{col}' not found in the Excel sheet")
df_filtered = df2[required_columns]
issuesArray = df_filtered.to_dict(orient='records')


print(issuesArray)

ключом является строка df2...

Другие вопросы по теме