Python Pandas: сводная таблица со счетом как aggfunc дает отличный результат, чем value_counts

Я хотел отфильтровать строки dfbc, у которых был BUSINESS_ID, который также был в BUSINESS_ID dfProfilesBusIds

. Наконец, он работал:

dfbc = dfbc[(dfbc['BUSINESS_ID'].isin(dfProfilesBusIds['BUSINESS_ID']) == False)]
7
задан Mateus Sampaio 13 July 2018 в 22:23
поделиться

1 ответ

Да, они должны давать одинаковые результаты. На самом деле они даже в более старых версиях Pandas:

In [22]: pd.__version__
Out[22]: '0.20.3'

In [23]: df = pd.DataFrame({'A': 10000*[1], 'B': np.random.randint(0, 1001, 10000)})
In [24]: df['level'] = pd.cut(df.B, bins = [0, 200, 400, 600, 800, 1000], 
                              labels = ['i', 'ii', 'iii', 'iv', 'v'])

In [25]: df.level.value_counts(sort = False)
Out[25]: 
i      1968
ii     1936
iii    1992
iv     2073
v      2022
Name: level, dtype: int64

In [26]: df.pivot_table(index = 'A', columns = 'level', values = 'B', aggfunc = 'count').loc[1]
Out[26]: 
level
i      1968
ii     1936
iii    1992
iv     2073
v      2022
Name: 1, dtype: int64

Использование df.groupby() также работает:

In [27]: df.groupby('level').size()
Out[27]: 
level
i      1968
ii     1936
iii    1992
iv     2073
v      2022
dtype: int64

Таким образом, версия, которую вы используете, вероятно, имеет некоторую ошибку.

2
ответ дан Pearly Spencer 17 August 2018 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: