我正在尝试编写一个脚本,该脚本将根据第一列中相应行的单元格值是否包含特定字符(在这种情况下为“#”)来删除行。
我尝试编写以下函数,希望该函数可以迭代工作表并返回包含已删除行的新工作表。 LabSample是我正在使用的工作表。
def remove_headers():
for rowNum in range(2, LabSample.max_row):
sys_sample_code = LabSample.cell(row=rowNum, column=1).value
if '#' not in sys_sample_code:
continue
else:
LabSample.delete_rows(rowNum, 1)
return LabSample
for row in LabSample.rows:
print(row[0].value)
我目前没有收到任何错误消息,但是我得到的输出与输入相同。似乎没有任何行被删除。
答案 0 :(得分:0)
尝试将sys_sample_code强制转换为str()
#...
sys_sample_code = LabSample.cell(row=rowNum, column=1).value
if '#' not in str(sys_sample_code): # SEE EDIT HERE
# ...
答案 1 :(得分:0)
我可能会通过在numpy中导入表,然后索引包含'#'的行来完成此操作,最后使用np.delete删除行,然后再将其推回原位。
这是一个简短的示例,有点说明了我在说什么。只需将起始数组'x'替换为数据数组,然后沿着您感兴趣的列进行分析即可。
import numpy as np
x = np.array(
[1,2,5,'a','#test1', 'b', 7, '#test2', 9]
)
index = {count: pos for count, pos in enumerate(x) if '#' in pos[:]}
x = np.delete(x, list(index.keys()))
In [17]: x
Out[17]: array(['1', '2', '5', 'a', 'b', '7', '9'], dtype='<U11')