如何删除'';从python中的列表中

如何删除'';从python中的列表中,python,pandas,list,Python,Pandas,List,我有一个带有列表的df列。每个看起来像[1,2,3,4',6,7],[2,3',5,6]。我想删除每行中的'。我曾经 df[column].apply(lambda x: x.remove('')) 但它不起作用。有人能帮我吗?谢谢 ValueError: list.remove(x): x not in list 对其进行显式筛选:筛选(lambda x:x!=“”,您的\u列表)或使用列表理解:[x代表您的\u列表中的x,如果x!=“”]。它们的工作原理相同,只是偏好的问题 您不希望通过

我有一个带有列表的df列。每个看起来像
[1,2,3,4',6,7],[2,3',5,6]
。我想删除每行中的
'
。我曾经

df[column].apply(lambda x: x.remove(''))
但它不起作用。有人能帮我吗?谢谢

ValueError: list.remove(x): x not in list

对其进行显式筛选:
筛选(lambda x:x!=“”,您的\u列表)
或使用列表理解:
[x代表您的\u列表中的x,如果x!=“”]
。它们的工作原理相同,只是偏好的问题


您不希望通过布尔方法过滤掉0,因为这样您会意外地去掉0,因为它们在python中是“falsy”。

如果您有一个列表,您可以使用它上的过滤器过滤掉您不想在列表中的元素,如下所示-

my_list = [1,2,3,4,'',6,7]
my_list = list(filter(lambda x : x!='',my_list))
print(my_list)
my_list = [[1,2,3,4,'',6,7],[2,3,'',5,6]]
my_list = list(map(lambda sub_list:list(filter(lambda x : x!='',sub_list)),my_list))
print(my_list)
输出:

[1, 2, 3, 4, 6, 7]
[[1, 2, 3, 4, 6, 7], [2, 3, 5, 6]]

这也可以使用map轻松地扩展为二维列表。我们基本上只对二维列表的每个元素应用第一个函数,如下所示-

my_list = [1,2,3,4,'',6,7]
my_list = list(filter(lambda x : x!='',my_list))
print(my_list)
my_list = [[1,2,3,4,'',6,7],[2,3,'',5,6]]
my_list = list(map(lambda sub_list:list(filter(lambda x : x!='',sub_list)),my_list))
print(my_list)
输出:

[1, 2, 3, 4, 6, 7]
[[1, 2, 3, 4, 6, 7], [2, 3, 5, 6]]

对于您的特定问题,您可以简单地将其放在一个try块中, 当遇到没有“”作为元素的列表时,它会抛出一个错误

for i, row in df.iterrows():
     row['column'] = list(filter(lambda x: x != "", row['column']))
   
如果您只是想要从列表中删除“”的方法

你可以试试

new_list= [s for s in your_list if s != ""]


也可以

我不知道你到底是怎么得到这个错误的。如前所述,如果您的专栏只有两个元素,那么它应该如下所示工作

import pandas as pd
df = pd.DataFrame({'column':[[1,2,3,4,'',6,7],[2,3,'',5,6]]})
df['column'].apply(lambda x:x.remove(''))
print(df)
输出

               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
Traceback (most recent call last):
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <module>
    df['column'].apply(lambda x:x.remove(''))
  File "C:\Users\Deva\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 3848, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas\_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <lambda>
    df['column'].apply(lambda x:x.remove(''))
ValueError: list.remove(x): x not in list
               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
2        [2, 3, 5, 6]
发生此问题的原因可能是,u中可能有一个元素没有
'
,如
[2,3,5,6]
,因此在这种情况下可能会发生此错误。因此,只要重新创建错误,我们就可以看到同样的错误发生

import pandas as pd
df = pd.DataFrame({'column':[[1,2,3,4,'',6,7],[2,3,'',5,6],[2,3,5,6]]})
df['column'].apply(lambda x:x.remove(''))
print(df)
错误输出

               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
Traceback (most recent call last):
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <module>
    df['column'].apply(lambda x:x.remove(''))
  File "C:\Users\Deva\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 3848, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas\_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <lambda>
    df['column'].apply(lambda x:x.remove(''))
ValueError: list.remove(x): x not in list
               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
2        [2, 3, 5, 6]
输出

               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
Traceback (most recent call last):
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <module>
    df['column'].apply(lambda x:x.remove(''))
  File "C:\Users\Deva\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 3848, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas\_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer
  File "C:/Users/Deva/PycharmProjects/IITJ/ML/MLf3/extras/adaf.py", line 3, in <lambda>
    df['column'].apply(lambda x:x.remove(''))
ValueError: list.remove(x): x not in list
               column
0  [1, 2, 3, 4, 6, 7]
1        [2, 3, 5, 6]
2        [2, 3, 5, 6]

文档明确说明在使用iterrows时不要修改dataframe。但是适用于小数据集,不知道th0,感谢infonp,我在这里写了一个答案后也看到了它。替换
.map
.apply
将是我认为最好的选择。