我有一个包含列表的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
filter(lambda x: x != "", your_list)
或使用列表推导式:[x for x in your_list if x != ""]
。它们的作用相同,只是个人偏好的问题。my_list = [1,2,3,4,'',6,7]
my_list = list(filter(lambda x : x!='',my_list))
print(my_list)
输出:
[1, 2, 3, 4, 6, 7]
使用map函数也可以轻松地扩展为二维列表。我们将基本上对二维列表的每个元素应用第一个函数,具体如下 -
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], [2, 3, 5, 6]]
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 != ""]
或者
new_list = list(filter(lambda x: x != "", your_list))
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]
''
,例如 [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)
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
以上情况的解决方案
为了避免这种情况,只需引入try except
即可。
import pandas as pd
df = pd.DataFrame({'column':[[1,2,3,4,'',6,7],[2,3,'',5,6],[2,3,5,6]]})
try:
df['column'].apply(lambda x:x.remove(''))
except:
pass
print(df)
输出
column
0 [1, 2, 3, 4, 6, 7]
1 [2, 3, 5, 6]
2 [2, 3, 5, 6]
.map
或.apply
替换将使其成为最佳选项,我认为。 - user128029