在python列表上使用apply时出错
我有一个数据框,其中在python列表上使用apply时出错,python,regex,list,dataframe,Python,Regex,List,Dataframe,我有一个数据框,其中txt列包含一个列表。我想使用函数clean_text()清理txt列 我的解决方案: 但我得到了以下错误: 错误 我不知道如何使用numpy。在这个问题中,在哪里。根据对您问题的修改和评论中的讨论,我认为您需要使用以下行: df['txt'] = df['txt'].apply(lambda x: [clean_text(z) for z in x]) 在这种方法中,apply与lambda一起使用,以循环txt系列的每个元素,而一个简单的for循环(使用Python的列
txt
列包含一个列表。我想使用函数clean_text()清理txt
列
我的解决方案:
但我得到了以下错误:
错误
我不知道如何使用
numpy。在这个问题中,
在哪里。根据对您问题的修改和评论中的讨论,我认为您需要使用以下行:
df['txt'] = df['txt'].apply(lambda x: [clean_text(z) for z in x])
在这种方法中,apply
与lambda
一起使用,以循环txt
系列的每个元素,而一个简单的for循环(使用Python的列表理解表示)用于迭代txt
子列表中的每个项目
我已使用以下值对数据测试了该代码段:
data = {
'value': [
'abc.txt',
'cda.txt',
],
'txt':[
[
'2019/01/31-11:56:23.288258 1886 7F0ED4CDC704 asfasnfs: remove datepart',
],
[
'2019/02/01-11:56:23.288258 1886 7F0ED4CDC704 asfasnfs: remove datepart',
],
]
}
下面是控制台输出的一个片段,显示了转换前后的数据帧:
>>> df
value txt
0 abc.txt [2019/01/31-11:56:23.288258 1886 7F0ED4CDC...
1 cda.txt [2019/02/01-11:56:23.288258 1886 7F0ED4CDC...
>>> df['txt'] = df['txt'].apply(lambda x: [clean_text(z) for z in x])
>>> df
value txt
0 abc.txt [asfasnfs remove datepart]
1 cda.txt [asfasnfs remove datepart]
>>>
不一样。我如何使用np.where
在我的例子中?我认为你在这个例子中的数据集是不完整的?使用为数据提供的值运行代码时,这对我来说运行正常,不会产生属性错误。@Spenced,我更新了问题,基本上txt列包含字符串列表。啊,这有点道理,尽管上面的代码显然格式不正确,由于粘贴了df
at的输出。无论如何,我不确定你的最终目标是什么,但这看起来确实运行并执行了替换df['txt']。apply(lambda x:[clean_text(z)for z in x])
@user15051990我永远不会理解为什么人们会接受答案,但也不会投票给他们。这当然是完全可选的,但不需要任何费用。(目前唯一的投票是我的)@uhoh,lol我不能假装理解,但是哦,好吧。很高兴能帮助别人!
df['txt'] = df['txt'].apply(lambda x: [clean_text(z) for z in x])
data = {
'value': [
'abc.txt',
'cda.txt',
],
'txt':[
[
'2019/01/31-11:56:23.288258 1886 7F0ED4CDC704 asfasnfs: remove datepart',
],
[
'2019/02/01-11:56:23.288258 1886 7F0ED4CDC704 asfasnfs: remove datepart',
],
]
}
>>> df
value txt
0 abc.txt [2019/01/31-11:56:23.288258 1886 7F0ED4CDC...
1 cda.txt [2019/02/01-11:56:23.288258 1886 7F0ED4CDC...
>>> df['txt'] = df['txt'].apply(lambda x: [clean_text(z) for z in x])
>>> df
value txt
0 abc.txt [asfasnfs remove datepart]
1 cda.txt [asfasnfs remove datepart]
>>>