condensing a list of lists with 'description' lines in Python
You can do this in one go, just keep a data piece you are going to yield and list of comment items. If you encounter a new comment item - append to list, if you encounter a ata piece - yield one you were holding with all the comments, wipe comments and hold a new data item instead, like this:

def is_comment(item):
    return item[0] == ''

def nonempty(item):
    return [x for x in item if x]

def fuse_comments(data):
    result = data[0]
    comments = []
    for element in data[1:]:
        if is_comment(element):
            comments += nonempty(element)
        else:
            yield result + [' '.join(str(comment) for comment in comments)]
            comments = []
            result = nonempty(element)
    yield result + [' '.join(str(comment) for comment in comments)]

from pprint import pprint

pprint(list(fuse_comments(data)))