grouping by day of the week pandas

前端 未结 3 1219
后悔当初
后悔当初 2021-01-28 17:10
  I have a dataframe,df 

        Index       eventName Count   pct
     2017-08-09       ABC     24     95.00%
     2017-08-09       CDE    140     98.50%
     2017-08-         


        
相关标签:
3条回答
  • 2021-01-28 17:24

    You can use:

    df.rename(columns={'Index': 'New_name'}, inplace=True)
    
    df['New_name'] = pd.to_datetime(df['New_name'])
    
    df['Day_df'] = df['New_name'].dt.weekday_name
    
    df.groupby(['Day_df']).count()
    
    0 讨论(0)
  • 2021-01-28 17:33

    By using value_counts

    df.Index=pd.to_datetime(df.Index)
    df.Index.dt.weekday_name.value_counts()
    Out[994]: 
    Wednesday    3
    Thursday     2
    Friday       2
    Name: Index, dtype: int64
    
    0 讨论(0)
  • 2021-01-28 17:46

    Wen's answer with value_counts is good, but does not account for the possibility of NaNs in the pct column.


    Assuming Index is the index, you can call groupby + count -

    df.index = pd.to_datetime(df.index)
    df.groupby(df.index.weekday_name).pct.count()
    
    Index
    Friday       2
    Thursday     2
    Wednesday    3
    Name: pct, dtype: int64
    

    To sort on weekday, convert to pd.Categorical, as shown here.

    0 讨论(0)
提交回复
热议问题