将pandas对象提取到列表列表中并提取唯一值

时间:2017-10-14 19:03:50

标签: python list pandas

所以我有一个存储为pandas数据帧对象的文件字典,我通过for循环访问每个文件以提取“国家/地区”。柱。我要做的是将每个提取到一个列表中,然后获取整个列表列表的集合。这是代码和我的困境:

    country_setter = []
        for file in files_list:
        country_setter.append(all_comps[file]['Country'].tolist())

    uni_country_setter = ?

结果输出是一个列表列表,每个pandas df [' Country']列在父列表中列出一个列表。它看起来像这样:

[['France',
  'United States',
  'Poland',
  'Poland',
  'Poland',
  'Poland',
  'Hungary',
  'Poland',
  'France',
  'United Kingdom',
    ....
  'Namibia',
  'China',
  'China',
  'Ireland'],
 ['Netherlands',
  'Canada',
  'United States',
  'Canada',
  'Canada',
  'United States',
  'Sweden',
  'Sweden',
  'United Kingdom',
   ....
  'Ireland',
  'Netherlands',
  'Netherlands',
  'France',
  'Hong Kong',
  'France',
  'France',
  'United States',
  'France',
  'United States']]

它是一个包含40个单独列表的列表。我可以使用set(country_setter [0]),它可以很好地为我提供第一个列表的唯一值,但我需要知道所有文件的唯一值。

如果您有任何人可以提供帮助,请与我们联系。我通过stackoverflow进行了仔细研究,发现只有一个问题略有相似,但他们的目标是在独特的提取和使用的itertools中维护列表结构。我想在这里列出所有列表中的唯一个人值。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要展平列表,然后按set创建唯一列表:

uni_country_setter = list(set([item for sublist in country_setter for item in sublist]))

编辑:

不需要第一个循环,可以使用:

uni_country_setter = list(set([item for file in files_list 
                               for item in all_comps[file]['Country'].tolist()]))