为列表的行插入包含空字符串的新单元格,其中现有单元格为None

时间:2017-08-27 19:42:39

标签: python list dataframe iterator

我有一份数据清单。想象一下,每行有7列。

    list_of_data = [
      [['Joe', 4, 4, 4, 5, 'cabbage', None], 
       ['Joe', 43, 42, 41, 53, 'cabbage', None],
       ['Joe', 24, 34, 44, 55, 'cabbage', None]],

      [['Tom', 7, 34, 4, 52, 'cabbage', None],
       ['Tom', 4, 24, 43, 52, 'cabbage', None],
       ['Tom', 4, 4, 4, 5, 'cabbage', None]],

      [['Fred', 4, 4, 4, 5, 6, 'cabbage'],
       ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
       ['Fred', 4, 4, 4, 5, 6, 'cabbage']]
    ]

请注意,对于Joe和Tom的行,最后一个索引/列包含None,但倒数第二个索引/列包含卷心菜。对于Fred的行,最后一个索引/列包含'卷心菜'。

我从一个函数中生成了这个列表,该函数遍历了众多URL中包含的表数据。问题是Fred的表在索引#3处有一个额外的列,而Joe和Tom的输入表在索引#3处缺少此列。因此,当它生成数据时,从索引#3开始的Joe和Tom的行将填充应该向右移动1列的值,在索引#3处缺少值。

因此,对于那些最后一个索引/列为None的行,我想在这些行的索引#3处结束一个空字符串。

或者,相反,对于那些最后一个索引/列为None的行,从索引#3开始,我想将所有列向右移动一列。

1 个答案:

答案 0 :(得分:0)

for i in list_of_data:
    for j in i:
        if j[len(j)-1] == None:
            j.insert(3, "empty")