从缺失值列表中删除无

时间:2017-01-11 09:30:38

标签: python list

[['user_1',
  'user_2',
  'user_8',
   None,
   None],
 ['ben',
  'karl',
   None,
   None]]

我尝试删除缺失值

for element in df:
     element=[x for x in element if x is not None]

此代码保留所有内容

4 个答案:

答案 0 :(得分:1)

my_list= [['user_1',
  'user_2',
  'user_8',
   None,
   None],
 ['ben',
  'karl',
   None,
   None]]

print [ [ elt for elt in a_list if elt is not None ] for a_list in my_list ]
  

[['user_1','user_2','user_8'],['ben','karl']]

答案 1 :(得分:1)

代码的问题在于

element=[x for x in element if x is not None]

创建新的筛选列表并将其绑定到名称element,其中替换名称为element的旧列表对象。但我们可以使用切片分配来改变该列表:

df = [
    [
        'user_1',
        'user_2',
        'user_8',
        None,
        None,
    ],
    [
        'ben',
        'karl',
        None,
        None,
    ]
]

# Remove the `None` values
for element in df:
     element[:] = [x for x in element if x is not None]

for row in df:
    print(row)

<强>输出

['user_1', 'user_2', 'user_8']
['ben', 'karl']

答案 2 :(得分:1)

for element in df:
     element[:]=[x for x in element if x is not None]

出:

[['user_1', 'user_2', 'user_8'], ['ben', 'karl']]

Documententer image description here

答案 3 :(得分:0)

重新分配element不会改变列表,因为element是一个单独的变量。

通过一个小的更改,您可以使用嵌套的理解生成一个新的外部列表,如下所示:

df = [[x for x in element if x is not None] for element in df]