Pandas groupby dataframe затем возвращает одно значение результата (сумма, итог) - PullRequest
0 голосов
/ 12 июня 2018

Уважаемые,

Пожалуйста, помогите мне, я застрял. Я думаю, это не должно быть трудно, но я чувствую себя подавленным.

Нужно сделать старение дебиторской задолженности, поэтому они должны быть разделены вразные сегменты.

Предположим, у нас есть только 3 группы: текущий , свыше_10 дней * и 1010 * и над_20 дней и следующая таблица:

d = {'Cust': [Dfg, Ers, Dac, Vds, Mhf, Kld, Xsd, Hun], 
'Amount': [10000, 100000, 4000, 5411, 756000, 524058, 4444785, 54788,
'Days': 150, 21, 30, 231, 48, 15, -4, -14 }

enter image description here

Мне нужно сгруппировать суммы в общую сумму, в зависимости от группы старения.Пример: Текущий: 4499573 и т. Д.

Для этой цели я попытался сгруппировать дебиторскую задолженность с помощью следующего кода:

 above_10Days = df.groupby((df['Days'] > 0) & (df['Days'] <= 10))
 above10sum = above_10Days.Amount.sum().iloc[1]

Идеально работает, но только в том случае, если они являются действительными суммами в этой группе.,Когда они не являются такими A / R, он генерирует исключение и прекращает выполнение.Я пытался использовать функцию или сделать значение None равным 0, но безуспешно.

Надеюсь, кто-то может узнать решение.

Заранее спасибо

1 Ответ

0 голосов
/ 12 июня 2018

IIUC:

d = {'Cust': ['Dfg', 'Ers', 'Dac', 'Vds', 'Mhf', 'Kld', 'Xsd', 'Hun'], 
'Amount': [10000, 100000, 4000, 5411, 756000, 524058, 4444785, 54788],
'Days': [150, 21, 30, 231, 48, 15, -4, -14] }

df = pd.DataFrame(d)

#Updated to assign to output dataframe
df_out = (df.groupby(pd.cut(df.Days,
                  [-np.inf,10,20,np.inf],
                  labels=['Current','Above 10 Days','Above 20 Days']))['Amount']
  .sum())

Вывод:

Days
Current          4499573
Above 10 Days     524058
Above 20 Days     875411
Name: Amount, dtype: int64

Переменный присваиватель с использованием .loc:

varCurrent = df_out.loc['Current']
var10 = df_out.loc['Above 10 Days']
var20 = df_out.loc['Above 20 Days']
print(varCurrent,var10,var20)

Вывод:

4499573 524058 875411
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...