社区!这是一个很长的解释,但却是一个“简单”的问题!我有以下几点意见:
d = {'name': ['john', 'mary', 'james'], 'area':[['IT', 'Resources', 'Admin'], ['Software', 'ITS', 'Programming'], ['Teaching', 'Research', 'KS']]}
df = pd.DataFrame(data=d)
我的目标是从长度大于3的列“area”中筛选单词。因此,它看起来像:
我学会了两种方法来处理这种情况: df['area']=df['area'].map(lambda x: [e for e in x if len(e)>3])
def g(x):
return [e for e in x if len(e)>3]
df['area']=df['area'].map(g)
在这两种情况下,它都有效。
在学习方面,我不使用lambda函数,而是迭代行,然后应用func。
这就是我得到的
所需的输出不相同。有人能告诉我需要在我的代码中做什么,这样它才能得到所需的输出吗?
我真的很感谢到目前为止我得到的所有支持!谢谢
2条答案
按热度按时间9gm1akwq1#
问题是您返回的第一个元素长度超过3。请尝试以下操作:
但更好的是,尝试一种更具Python风格的方式:
mbyulnm02#
pandas
作为少数.str
您可以使用的方法之一是.str.len()
首先,您需要分解 Dataframe ,以便我们可以在整个df中应用操作,而不是在每个元素上迭代。