Как суммировать количество продаж в фрейме данных panda?

#python #pandas #plotly-dash

#python #pandas #plotly-dash

Вопрос:

У меня есть база данных продаж агентов по недвижимости. Продажи зачисляются на их идентификатор продавца (NRDS #). Некоторые продажи будут иметь одинаковый номер NRDS, поскольку агенты могут иметь обе стороны транзакции.

Я могу подсчитать продажи для каждой категории (listagent / buyersagent), используя эти строки кода:

dataListYTDBuyer = dataYTD.groupby('buyersagent')['buyersagent'].count().reset_index(name="count") dataListYTDBuyer = dataListYTDBuyer.sort_values('count', ascending=False)

dataListYTDList = dataYTD.groupby('listagent')['listagent'].count().reset_index(name="count") dataListYTDList = dataListYTDList.sort_values('count', ascending=False)

Это приводит к:

 buyersagent  count_x    listagent  count_y

0     635504004     1530  635504004.0    105.0

1     230010894      166  230010894.0     94.0
2     230018849      148  230018849.0     21.0
3     230015231      144  230015231.0    141.0
4     230014480      140  230014480.0    101.0
..          ...      ...          ...      ...
94    230003099       16  230003099.0     61.0
95    230010244       16  230010244.0     21.0
96    230018166       16          NaN      NaN
97    230016463       16  230016463.0      2.0
98    230016335       16  230016335.0     42.0
  

Я застрял на том, как добавить и упорядочить общее количество продаж (NaN заключается в том, что продавец не перечислил ни одного дома). Я пытался:

 sum_sales = dataListYTDList['count']   dataListYTDBuyer['count']
  

Но это, конечно, не (я не думаю), добавляя соответствующий набор чисел вместе (то есть суммируя продажи каждого продавца). Любой совет приветствуется!

Ответ №1:

Итак, показываемый вами фрейм данных — это не один, а два фрейма? И что вы хотите сделать, это суммировать количество продаж по идентификатору агента, независимо от того, является ли он агентом по покупке или продаже?

Если я правильно понял, то вы можете объединить два фрейма данных по идентификаторам, а затем вы можете суммировать количество продаж.

 df_merged = pandas.merge(
    dataListYTDList, 
    dataListYTDBuyer, 
    left_on='buyersagent', 
    right_on='listagent')

df_merged['total_sales'] = df_merged['count_x'].add(df_merged['count_y'])
  

Я думаю, что это должно сработать.