Как сгруппировать кадр данных, чтобы получить счеты двумя ключами в Python с помощью groupby () в функции [duplicate]

Другой вопрос был назван дубликатом этого:

В C ++ почему результат cout << x отличается от значения, которое показывает отладчик для x ?

x в вопросе - это переменная float.

Одним из примеров может быть

float x = 9.9F;

Отладчик показывает 9.89999962, вывод работы cout - 9.9.

Ответ оказывается, что точность cout по умолчанию для float равна 6, поэтому она округляется до шести десятичных цифры

См. здесь для справки

9
задан NinjaGaiden 3 May 2016 в 11:38
поделиться

4 ответа

Вы можете использовать pivot_table с unstack :

print df.pivot_table(index='Symbol', 
                     columns='Year', 
                     values='Action',
                     fill_value=0, 
                     aggfunc='count').unstack()

Year  Symbol
2001  AAPL      2
      BAC       0
2002  AAPL      0
      BAC       2
dtype: int64

Если вам нужен вывод как DataFrame, используйте to_frame :

print df.pivot_table(index='Symbol', 
                     columns='Year', 
                     values='Action',
                     fill_value=0, 
                     aggfunc='count').unstack()
                                     .to_frame()
                                     .rename(columns={0:'Action'})

             Action
Year Symbol        
2001 AAPL         2
     BAC          0
2002 AAPL         0
     BAC          2
13
ответ дан jezrael 25 August 2018 в 21:06
поделиться

Шаг 1. Создайте фрейм данных, в котором хранится счет каждого ненулевого класса в столбцах count

count_df = df.groupby(['Symbol','Year']).size().reset_index(name='counts')

. Шаг 2: Теперь используйте pivot_table для получения нужного кадра данных с подсчетом как для существующих, так и для несуществующие классы.

df_final = pd.pivot_table(count_df,
                       index=['Symbol','Year'],
                       values='counts',                            
                       fill_value = 0,
                       dropna=False,
                       aggfunc=np.sum)

Теперь значения счетчиков можно извлечь как список с помощью команды

list(df_final['counts'])
0
ответ дан Anjul Tyagi 25 August 2018 в 21:06
поделиться
0
ответ дан Joe 25 August 2018 в 21:06
поделиться

Если вы хотите сделать это без использования pivot_table, вы можете попробовать следующий подход:

midx = pd.MultiIndex.from_product([ df['Symbol'].unique(), df['Year'].unique()], names=['Symbol', 'Year'])
df_grouped_by = df_grouped_by.reindex(midx, fill_value=0)

То, что мы в основном делаем выше, это создание мультииндекса всех возможных значений, умножающих два столбцы, а затем используя этот мультииндекс, чтобы заполнить нули в нашей группе - с помощью dataframe.

0
ответ дан Punit S 25 August 2018 в 21:06
поделиться
Другие вопросы по тегам:

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