У меня есть лист 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. У кого-нибудь есть идеи, как это сделать?
Чтобы обработать лист Excel и извлечь определенные данные, убедитесь, что имена столбцов, на которые вы ссылаетесь в своем коде, точно совпадают с именами в листе Excel. Учитывая, что столбцы не являются первой строкой, пропуск строк с помощью skiprows=2
является правильным, при условии, что ваши столбцы начинаются с третьей строки.
Вот подробное решение:
Прочтите файл 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)
Обновите код, чтобы он соответствовал именам столбцов в соответствии с выводом на печать:
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("---")
Обработка возможных ошибок 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 и преобразовать их в список словарей для дальнейшей обработки.
Привет, Никет! Спасибо за информацию, это было очень полезно. Проблема, с которой я столкнулся, заключалась в том, что клоум не забирался после импорта. ``` 'Безымянный: 3', 'Безымянный: 4', 'Безымянный: 5', 'Безымянный: 6', 'Безымянный: 7', 'Безымянный: 8', 'Безымянный: 9', ... 'Безымянный : 187', 'Безымянный: 188', 'Безымянный: 189', 'Безымянный: 190', 'Безымянный: 191', 'Безымянный: 192', 'Безымянный: 193', 'Безымянный: 194', 'Безымянный: 195 ', 'Unnamed: 196'], ```, в документе Excel на самом деле более 200 столбцов, но мне нужно только семь или около того..... Командная команда df.columns указала мне на это.... Спасибо за помощь! та, Х
У меня это работает с помощью ```` df = pd.read_excel(importFile,skiprows=2) df2 = pd.DataFrame(df.values[1:], columns=df.iloc[0]) print(df2.columns) печать(df2) ```
На основе ответа Никета....
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...
Убедитесь, что имена столбцов соответствуют
print(df.columns)
.