To be precise, I have a Powertable that is connected to a dataset. This dataset takes the data from a csv file. The csv file contains empty lines or wrong data(that is, it has data that does not interest me). I need to remove these “empty lines” when they are displayed in the powertable. How could I do this? Thanks
How are you going from CSV to dataset?
Hi, here is my code:
filePath = “C:\Sup\ exe_v2.csv”
#system.gui.messageBox("if file exist") csvFile = open(filePath, 'r') reader=csv.reader(csvFile, delimiter=';') header = reader. next () dataset = system.dataset.toDataSet(header , list (reader)) system.tag.write("[default]dataset.value",dataset) data = system.tag.read("[default]dataset").value smalldata=system.dataset.filterColumns(data, ["C","CM","CMPT"]) event.source.parent.getComponent('Power Table').data = smalldata csvFile.close() os.remove(filePath)
This works for me to remove even numbers from the power table test data. There is a high likelihood that this is not the best way. Hopefully someone will come along with a more elegant method than looping through every row, but it should work as long as your table isn’t gigantic.
# You don't need the first two lines. They are just for me to get a dataset. pt = event.source.parent.getComponent('Power Table') data = pt.data # You'll need to write your own filter function. This one filters out even numbers def filterFunc(i): if i % 2 == 0: return 1 return 0 # You'll probably want to change the column index you're sending to filterFunc rowsToRemove =  for row in range(data.rowCount): if filterFunc(data.getValueAt(row,0)): rowsToRemove.append(row) filteredDataset = system.dataset.deleteRows(data,rowsToRemove)
You also don’t need the dataset as a tag for anything in this script. You may be using it somewhere else, but if you’re not, you don’t need the system.tag.write call. You for sure don’t need the system.tag.read call. Just continue to pass use the variable you’ve called dataset.
system.tag.read and system.tag.write are also (I think, someone will correct me if I’m wrong) depreciated. For new scripts opt for system.tag.readBlocking, system.tag.readAsync, system.tag.writeBlocking, or system.tag.writeAsync depending on your need.