【发布时间】:2021-09-19 03:01:39
【问题描述】:
社区!这是一个很长的解释,但一个“简单”的问题!我有以下df:
d = {'name': ['john', 'mary', 'james'], 'area':[['IT', 'Resources', 'Admin'], ['Software', 'ITS', 'Programming'], ['Teaching', 'Research', 'KS']]}
df = pd.DataFrame(data=d)
我的目标是从“区域”列中过滤长度大于 3 的单词。所以,它看起来像:
我学会了两种方法来处理这种情况:
-
df['area']=df['area'].map(lambda x: [e for e in x if len(e)>3]) -
定义 g(x):
return [e for e in x if len(e)>3] df['area']=df['area'].map(g)
在这两种情况下,它都有效。
在学习方面,我正在处理这种情况,但不使用 lambda 函数,而是遍历行,然后应用 func。
这就是我得到的
所需的输出不一样。谁能告诉我在我的代码中需要做什么才能获得所需的输出?
我非常感谢迄今为止我收到的所有支持!谢谢!!
【问题讨论】:
-
您将提前返回函数中的第一个匹配元素。相反,您应该创建一个列表,将满足条件的元素附加到列表并返回该列表。
-
return e退出函数,因此只返回第一次出现len(e) > 3
标签: python pandas function loops