#python-3.x #pandas #pandas-groupby
#python-3.x #pandas #pandas-groupby
Вопрос:
У меня есть df, как показано ниже df:
ID Number_of_Cars Age_in_days Total_amount Total_N Type
1 2 100 10000 100 A
2 5 10 1000 2 B
3 1 1000 1000 200 B
4 1 20 0 0 C
5 3 1000 100000 20 A
6 6 100 10000 20 C
7 4 200 10000 200 A
из приведенного выше df я хотел бы подготовить df1, как показано ниже
df1:
ID Avg_Monthly_Amount Avg_Monthly_N Type
1 3000 30 A
2 3000 6 B
3 30 6 B
4 0 0 C
5 3000 0.6 A
6 3000 6 C
7 1500 30 A
Объяснение:
Avg_Monthly_Amount = Avg monthly amount
Avg_Monthly_N = Avg monthly N
Чтобы подготовить df1, я попробовал приведенный ниже код
df['Avg_Monthly_Amount'] = df['Total_amount'] / df['Age_in_days'] * 30
df['Avg_Monthly_N'] = df['Total_N'] / df['Age_in_days'] * 30
Из df и df1 (или только из df) Я хотел бы подготовить приведенный ниже фрейм данных как df2
Я не мог написать правильный код для генерации ниже df2
Объяснение:
Агрегировать указанное выше число на уровне типа
Пример:
There are 3 customers (ID = 1, 5, 7) with Type = A, hence for Type = A, Number_Of_Type = 3
Avg_Cars for Type = A, is (2 3 4)/3 = 3
Avg_age_in_years for Type = A is ((100 1000 200)/3)/365
Avg_amount_monthly for Type = A is Mean of Average_Monthly_Amount in for type = A in df1
Avg_N_monthly for Type = A is Mean of Avg_Monthly_N in for type = A in df1
Конечный ожидаемый результат (df2)
Type Number_Of_Type Avg_Cars Avg_age_in_years Avg_amount_monthly Avg_N_monthly
A 3 3 1.19 2500 20.2
B 2 3 1.38 1515 6
C 2 3.5 0.16 1500 3
Ответ №1:
Не подготавливайте другие df
имена df1
из вашего исходного фрейма данных df
ваш фрейм данных df
:-
ID Number_of_Cars Age_in_days Total_amount Total_N Type
1 2 100 10000 100 A
2 5 10 1000 2 B
3 1 1000 1000 200 B
4 1 20 0 0 C
5 3 1000 100000 20 A
6 6 100 10000 20 C
7 4 200 10000 200 A
После создания / импорта df
:-
df['Avg_Monthly_Amount'] = df['Total_amount'] / df['Age_in_days'] * 30
df['Avg_Monthly_N'] = df['Total_N'] / df['Age_in_days'] * 30
df['Age_in_year']=df['Age_in_days']/365
Затем:-
df2=df.groupby('Type').agg({'Type':'count','Number_of_Cars':'mean','Age_in_year':'mean','Avg_Monthly_Amount':'mean','Avg_Monthly_N':'mean'}).rename(columns={'Type':'Number_Of_Type'})
Теперь, если вы печатаете или записываете df2
(если вы используете jupyter notebook), вы получите желаемый результат
Вывод:-
Number_Of_Type Number_of_Cars Age_in_year Avg_Monthly_Amount Avg_Monthly_N
Type
A 3 3.0 1.187215 2500.0 20.2
B 2 3.0 1.383562 1515.0 6.0
C 2 3.5 0.164384 1500.0 3.0
Комментарии:
1. Не могли бы вы поделиться своими выводами
2. конечно… Я отредактировал свой ответ, просто взгляните ……. кстати, если это решение поможет вам, тогда не стесняйтесь принять ответ