столбец с месяцами - PullRequest
       7

столбец с месяцами

1 голос
/ 24 октября 2019
i have data frame which contains fields casenumber , count and credated date .here created date is months which are in numerical i want to make dataframe as arrenge the ranges to the count acoording to createddate column 

Здесь я использовал приведенный ниже код, но я не соответствовал моему требованию. У меня есть фрейм данных, который содержит поля casenumber, count и creditted date. на счет в соответствии со столбцом createdate

i have data frame as below 
casenumber  count  CREATEDDATE
3820516     1      jan             
3820547     1      jan            
3820554     2      feb             
3820562     1      feb             
3820584     1      march             

4226616     1      april            
4226618     2      may             
4226621     2      may            
4226655     1      june            
4226663     1      june           

Here i used below code but i didnot match my requirement.i have data frame which contains fields casenumber , count and credated date .here created date is months which are in numerical i want to make dataframe as arrenge the ranges to the count acoording to createddate column


import pandas as pd
import numpy as np
df = pd.read_excel(r"")
bins = [0, 1 ,4,8,15, np.inf]
names = ['0-1','1-4','4-8','8-15','15+']
df1 = df.groupby(pd.cut(df['CREATEDDATE'],bins,labels=names))['casenumber'].size().reset_index(name='No_of_times_statuschanged')

    CREATEDDATE No_of_times_statuschanged
0   0-1               2092
1   1-4               9062
2   4-8               12578
3   8-15               3858
4   15+                 0

I got the above data as out put but my expected should be range for month on month based on the cases per month .
expected output should be like
CREATEDDATE    jan feb march april may june
   0-1          1   2   3     4     5   6
   1-4          3   0   6     7     8   9
   4-8          4    6  3     0     9    2
   8-15         0    3   4    5     8    9

Я получил вышеуказанные данные, как и положено, но мои ожидаемые результаты должны быть в диапазоне от месяца к месяцу на основе количества случаев в месяц. ожидаемый результат должен быть как

1 Ответ

0 голосов
/ 24 октября 2019

Используйте crosstab с изменением CREATEDDATE на count для pd.cut и меняйте порядок столбцов по подмножествам по списку имен столбцов:

#add another months if necessary
months = ["jan", "feb", "march", "april", "may", "june"]

bins = [0, 1 ,4,8,15, np.inf]
names = ['0-1','1-4','4-8','8-15','15+']
df1 = pd.crosstab(pd.cut(df['count'],bins,labels=names), df['CREATEDDATE'])[months]

print (df1)
CREATEDDATE  jan  feb  march  april  may  june
count                                         
0-1            2    1      1      1    0     2
1-4            0    1      0      0    2     0

Другая идеяиспользуется упорядоченные категории :

df1 = pd.crosstab(pd.cut(df['count'],bins,labels=names), 
                  pd.Categorical(df['CREATEDDATE'], ordered=True, categories=months))

print (df1)
col_0  jan  feb  march  april  may  june
count                                   
0-1      2    1      1      1    0     2
1-4      0    1      0      0    2     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...