Удаление столбца индекса из нескольких файлов Excel в python - PullRequest
1 голос
/ 03 марта 2020

У меня несколько листов Excel с одинаковыми именами столбцов. Когда я сохранял файлы из предыдущих вычислений, я забыл установить «Дата» в качестве индекса, и теперь у всех них (40) есть столбцы индекса с номерами от 1 до 200. Если я загружаю их в python, они снова получают дополнительный индексный столбец, в результате чего получаются 2 безымянных столбца. Я знаю, что могу использовать функцию glob для доступа ко всем моим файлам. Но есть ли способ, которым я могу получить доступ ко всем файлам, удалить / удалить столбец безымянного индекса и установить новый индекс в столбец даты

Вот пример 1 листа Excel прямо сейчас

df = pd.DataFrame({
'': [0, 1,2,3,4],
'Date': [1930, 1931, 1932, 1933,1934],
'value': [11558522, 12323552, 13770958, 18412280, 13770958],
}) 

Ответы [ 3 ]

0 голосов
/ 03 марта 2020

Быстрый способ сделать это с помощью pandas:

>>> df = df.drop('', axis=1)
>>> df = df.set_index('Date')
>>> df
         value
Date          
1930  11558522
1931  12323552
1932  13770958
1933  18412280
1934  13770958

(я сделал вышеизложенное из памяти, но общий совет для такого рода вещей - поискать в документации соответствующие функции. . https://pandas.pydata.org/pandas-docs/stable/reference/frame.html)

Вы также можете указать столбец заголовка при загрузке файлов:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

index_colint, список int, значение по умолчанию Нет

Столбец (0-индексированный) для использования в качестве меток строк в DataFrame. Пройдите None, если такой колонки нет. Если список пропущен, эти столбцы будут объединены в MultiIndex. Если подмножество данных выбрано с использованием протоколов, index_col основывается на подмножестве.

0 голосов
/ 03 марта 2020

Я думаю, что проще всего установить неправильный первый столбец для индексации, а затем использовать DataFrame.set_index для перезаписи их на Date столбец:

import glob, os

for file in glob.glob('subset/*.xlsx'):

    df = pd.read_excel(file, index_col=[0]).set_index('Date')
    print (df)

    #new excel files

    h,t = os.path.split(file)
    df.to_excel(os.path.join(h, 'new_' + t))

    #overwrite excel files (first backup data if something failed for avoid lost data)
    #df.to_excel(file)
0 голосов
/ 03 марта 2020

dfs = [pd.read_csv (файл) .set_index ('Date') [['value']] для файла в glob.glob ("/ your / path / to / folder / *. Csv")]

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