我在excel中有几千行数据。但是,在一列中,只填充了每五行。我想要做的是用上面一行中的数据填充每条填充线下面的四条空行。我有一个初学者对蟒蛇的掌握,所以如果有人能指引我朝着正确的方向前进,那将是一个很大的帮助。非常感谢。
答案 0 :(得分:2)
根据您的描述,这在Excel中似乎很容易做到:
假设row 1
包含列标题,数据从row 2
开始。如果column A
包含您的值(从A2
开始),则在单元格B2
中使用公式=IF(ISBLANK(A2), B1, A2)
并填写。如果A2
不为空,则此公式将返回column B
的值,如果column A
中的当前值为空,则会返回=""
中的上一个值。
请注意,这要求每个组中的第一个单元格包含您要填充的值。
用于一般参考的后脚本:Excel很难通过公式生成空白单元格,因此公式 =IFERROR(..., "")
(或ISBLANK(A2)
之类的结果)不是空白,但长度为0.将LEN(A2)<1
更改为{{1}}说明这些情况。
答案 1 :(得分: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 :(得分:1)
使用Python完成更新Excel数据有多种方法:
CSV模块
将Excel数据另存为csv。使用csv module作为元组,列表或字典导入Python。然后,遍历列表的项目,然后添加所需的数据。
#!/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>
Pandas数据框
将Excel数据导入Python pandas library数据框。然后,按索引搜索特定行,然后添加所需数据。
#!/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宏
编写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")
...