使用Lambda计算熊猫数据框中的值

时间:2019-04-13 09:21:12

标签: python pandas lambda

我有熊猫数据框中的年份列表。我想使用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的情况下执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

为什么不仅仅使用列表理解。

[x for x in df['year_built'] if len(x) == 4]

答案 1 :(得分:0)

我认为正确的方法是(假设year_builtobject类型的列,并且包含字符串:

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