填写缺少的列名-Python

填写缺少的列名-Python,python,Python,我试图将一组数据帧连接在一起,它们都具有相同的信息。但是有些列名称丢失,有些数据帧有额外的列。但是,对于它们确实具有的列,它们都遵循相同的顺序。我想要一个函数来填充缺少的名称。以下几点几乎奏效: def fill_missing_colnames(colnames): valid_colnames = ['Z', 'K', 'C', 'T', 'A', 'E', 'F', 'G'] missing = list(set(valid_colnames) - set(colnam

我试图将一组数据帧连接在一起,它们都具有相同的信息。但是有些列名称丢失,有些数据帧有额外的列。但是,对于它们确实具有的列,它们都遵循相同的顺序。我想要一个函数来填充缺少的名称。以下几点几乎奏效:

def fill_missing_colnames(colnames):

    valid_colnames = ['Z', 'K', 'C', 'T', 'A', 'E', 'F', 'G']

    missing = list(set(valid_colnames) - set(colnames))
    if len(missing) > 0:  
        for i, col in enumerate(colnames):
            if col not in valid_colnames and len(missing) > 0:
                colnames[i] = missing.pop(0)
    return colnames
但问题是set()按字母顺序排列元素,而我希望保留列名(或者更确切地说是有效列名)的顺序

海螺看起来像这样:

concat_errors = {}
all_data = pd.DataFrame(list_of_dataframes[0])
for i, data in enumerate(list_of_dataframes[1:]):
    try:
        all_data = pd.concat([all_data, pd.DataFrame(data)], axis = 0, sort = False)
    except Exception as e:
        concat_errors.update({i+1:e})

您可以使用列表理解而不是集合操作

missing=[col for col in valid\u colnames(如果col不在colnames中)]


这将简单地过滤掉不在colnames中的值并保留顺序。

您可以使用列表理解而不是set操作

missing=[col for col in valid\u colnames(如果col不在colnames中)]


这将简单地过滤掉不在colnames中的值并保留顺序。

您的连接代码是什么样子的?在上面添加了concat脚本您的连接代码是什么样子的?在上面添加了concat脚本
concat_errors = {}
all_data = pd.DataFrame(list_of_dataframes[0])
for i, data in enumerate(list_of_dataframes[1:]):
    try:
        all_data = pd.concat([all_data, pd.DataFrame(data)], axis = 0, sort = False)
    except Exception as e:
        concat_errors.update({i+1:e})