Динамическое чтение файла Excel в Python - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь прочитать Excel, в котором есть пустые строки и столбцы. Процесс становится более сложным, так как он имеет некоторые ненужные значения перед заголовком.

enter image description here

В настоящее время я жестко задаю имя столбца для извлечения таблицы. Это имеет два недостатка: что, если столбец отсутствует в таблице, и что, если имя столбца повторяется в значении столбца. Есть ли способ динамически написать программу, которая автоматически определяет заголовок таблицы и читает таблицу?

фрагмент кода:

raw_data = pd.read_excel('test_data1.xlsx','Sheet8',header=None)

data_duplicate = pd.DataFrame()

for row in range(raw_data.shape[0]): 
    for col in range(raw_data.shape[1]):
        if raw_data.iloc[row,col] == 'Currency':
            data_duplicate = raw_data.iloc[(row+1):].reset_index(drop=True)
            data_duplicate.columns = list(raw_data.iloc[row])
            break
data_duplicate.dropna(axis=1, how='all',inplace=True)
data_duplicate

enter image description here

Также количество строк банка + строк мусора до заголовка не исправлена.

1 Ответ

0 голосов
/ 19 февраля 2020

Вот мой путь: вы можете отбросить все строки и все столбцы, содержащие Nan

data = pd.read_excel('test.xlsx')
data = data.dropna(how='all', axis = 1)
data = data.dropna(how='all', axis = 0)
data = data.reset_index(drop = True)

, лучше, если вы поместите это в функцию, если вам нужно открыть несколько DataFrame в одном и том же коде:

data = pd.read_excel('test.xlsx')

def remove_nans(df):
    x = df.dropna(how = 'all', axis = 1)
    x = x.dropna(how = 'all', axis = 0)
    x = x.reset_index(drop = True)
    return x

df = remove_nans(data)
print(df)
...