填写缺少的列名-Python

时间:2019-03-15 13:19:02

标签: python

我正在尝试将一堆数据框连接在一起,它们都具有相同的信息。但是缺少某些列名称,并且某些数据框具有额外的列。但是,对于它们确实具有的列,它们都遵循相同的顺序。我想要一个函数来填写缺少的名字。以下几乎可以正常工作:

colnames = ['K', 'C', 'T', 'E', 'XY', 'F', 'G']

list(set(valid_colnames) - set(colnames))
Out[9]: ['A', 'Z']

但是问题是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})

concat看起来像这样:

  <div class="col-lg-9">
    <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
      <ol class="carousel-indicators">
        {% for product in featured_products %}
        <li data-target="#carouselExampleIndicators" data-slide-to="{{ forloop.counter }}" {% if forloop.counter == 1 %}class="active"{% endif %}></li>
        {% endfor %}
      </ol>
      <div class="carousel-inner" role="listbox">
        {% for product in featured_products %}
        <div class="carousel-item active">
          <img class="d-block img-fluid" src="/media/{{product.image}}" alt="First slide">
        </div>
        {% endfor %}
      </div>
      <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>

1 个答案:

答案 0 :(得分:2)

您可以使用列表推导代替设置操作。

missing = [col for col in valid_colnames if col not in colnames]

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