Подсчет значений в кадре данных панд с использованием лямбды - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть список лет во фрейме данных панд. Я хочу отфильтровать их с помощью лямбда-функции, которую я пытаюсь передать с помощью метода count. Для меня использование лямбды - это самый удобный способ, я бы предпочел решение, включающее лямбду.

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'

Каков оптимальный способ сделать это с помощью лямбды и без нее?

Ответы [ 3 ]

1 голос
/ 13 апреля 2019

Почему бы просто не использовать понимание списка.

[x for x in df['year_built'] if len(x) == 4]
0 голосов
/ 13 апреля 2019

Предположим, 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
0 голосов
/ 13 апреля 2019

Мне кажется, что правильный способ сделать это (при условии, что 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...