2015-06-12 5 views
0

У меня есть пара тысяч данных в excel. Однако в одной колонке заполняется только каждая пятая строка. То, что я пытаюсь сделать, это заполнить четыре пустые строки ниже каждой заполненной строки данными из строки выше. У меня есть понимание новичком питона, поэтому, если кто-то может направить меня в правильном направлении, это будет большой помощью. Большое спасибо.Заполнение недостающих данных в excel

+0

openpyxl может вам помочь. –

+0

Либо используйте предложенный пакет, либо по крайней мере предоставите нам образец ваших данных и вашу попытку кода. – Leb

ответ

1

Должно быть легко исправить с помощью VBA (хотя вы могли бы даже сделать что-то подобное с созданной колонки и формулы Excel):

Sub FillIn() 
    Dim intLast As Integer, intColumn As Integer 
    intLast = 100 'your last row' 
    intColumn = 5 'the column missing data' 
    For i = 2 To intLast 'assume 2 because of headers' 
     If IsEmpty(Cells(i, intColumn)) Then Cells(i, intColumn).Value = Cells(i - 1, intColumn).Value 
    Next i 
End Sub 

Просто замените значения intLast и intColumn как ваши ценности.

2

На основании вашего описания, это, кажется, достаточно легко сделать в Excel:

Предположим row 1 содержит заголовки столбцов, а данные начинаются в row 2. Если column A содержит ваши значения (начиная с A2), в ячейке B2 используйте формулу =IF(ISBLANK(A2), B1, A2) и заполните. Эта формула вернет значение A2, если оно не пустое, и вернет предыдущее значение в column B, если текущее значение в column A пустое.

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

пост-скрипт для общей ссылки: Excel имеет трудное время с пустыми клетками в результате формул, поэтому формула="" (или результатом чего-то вроде =IFERROR(..., "")) является не пустой, но имеет длину 0. Измените ISBLANK(A2) на LEN(A2)<1.

1

Есть различные способы достигнуть обновления данных Excel с Python:

модуль CSV

данные Сохранить Excel как CSV. Импортируйте в Python как кортеж, список или словарь, используя csv module. Затем, итерации по элементам списка, а затем добавьте необходимые данные.

#!/usr/bin/python 
import csv 

with open('C:\Path\To\ExcelDataFile.csv', 'rt') as csvfile: 
    csvReader = csv.reader(csvfile) 
    data = [] 
    for row in csvReader: 
     data.extend(row) 

    for i in range(0, len(data)): 
     if data[i][colnum] != None: 
      data[i + 1][colnum] = <somevalue> 
      data[i + 2][colnum] = <somevalue> 
      data[i + 3][colnum] = <somevalue> 
      data[i + 4][colnum] = <somevalue> 

Панды dataframe

данных Импорт Excel в Python pandas library dataframe. Затем найдите определенные строки по индексу, затем добавьте необходимые данные.

#!/usr/bin/python 
import pandas as pd 

df = pd.read_excel('C:\Path\ToExcel\DataFile.xlsx', 'ExcelSheetName') 
for i, row in df.iterrows() 
    if df.loc[i, colnum] != None : 
     df.loc[i + 1, column] = <somevalue>  
     df.loc[i + 2, colnum] = <somevalue> 
     df.loc[i + 3, colnum] = <somevalue> 
     df.loc[i + 4, colnum] = <somevalue> 

Excel макрос

Script Excel макрос для очистки данных по мере необходимости и есть Python запустить макрос перед импортом. Или просто запустите макрос в Excel и импортируйте конечные данные в Python, используя вышеупомянутые параметры.

#!/usr/bin/python 
import os 
import win32com.client 

xl=win32com.client.Dispatch("Excel.Application") 
xl.Workbooks.Open(Filename="C:\Path\ToMacroEnabled\ExcelData.xlsm") 
xl.Application.Run("ExcelData.xlsm!macroname.macroname") 
... 
+0

Большое спасибо! –

Смежные вопросы