我有熊猫数据框中的年份列表。我想使用lambda函数过滤它们,我正在尝试使用count方法传递该函数。对我来说,使用lambda是最方便的方法,我更喜欢涉及lambda的解决方案。
print df['year_built'][:5]
print df['year_built'].count(lambda x: len(x) == 4)
0 1981
1 1980
2 1935
3 2007
4 1994
Name: year_built, dtype: object
AttributeError: 'RangeIndex' object has no attribute 'levels'
在没有lambda的情况下执行此操作的最佳方法是什么?
答案 0 :(得分:1)
为什么不仅仅使用列表理解。
[x for x in df['year_built'] if len(x) == 4]
答案 1 :(得分:0)
我认为正确的方法是(假设year_built
是object
类型的列,并且包含字符串:
df.loc[df['year_built'].str.len() == 4, 'year_built']
如果不是:
df.loc[(1000 <= df['year_built']) & (df['year_built'] < 9999), 'year_built']
答案 2 :(得分:0)
假设year_build
是字符串列。下面将为您提供len = 4
year_build
0 1981
1 1980
2 1935
3 2007
4 1994
5 67
6 89
In [149]: (df['year_build'].str.len() == 4).sum()
Out[149]: 5