2014-09-06 68 views
0
数据

样品看起来是这样的:大熊猫GROUPBY ID,找到最大重复平日

id week_day 
0 48 Wednesday 
1 48 Wednesday 
2 51 Saturday 
3 53 Friday 
4 54 Tuesday 
5 56 Thursday 
6 57 Wednesday 
7 57 Thursday 
8 57 Thursday 
9 58 Thursday 
10 60 Monday 
11 60 Monday 
12 60 Tuesday 
13 60 Wednesday 
14 62 Monday 
15 62 Wednesday 
16 62 Thursday 
17 62 Thursday 
18 62 Saturday 
19 62 Saturday 

我想找到的每一个ID,它是任何一个星期重复的次数(最大数量在冲突的情况下,随机平日可以考虑)。 所以我用

function(df): 
    return pd.Series({'frequent_weeday':df['booked_day'].max()}] 
df.groupby('id').apply(function) 

输出是

frequent_week_day 
id 
48 2014-09-10 
51 2014-09-06 
53 2014-09-12 
54 2014-09-09 
56 2014-09-11 
57 2014-09-10 
58 2014-09-11 
60 2014-09-10 
62 2014-09-10 
63 2014-09-09 
64 2014-09-11 

这是asurdly意外。

你能帮我找到数据集中每个id的最频繁的工作日吗?

+1如果你已经知道大熊猫是如何解释并显示“无用”的值作为输出,并没有给出错误。

非常感谢您的任何见解!

+0

你的代码工作对我来说:' 出[11]: frequent_weeday ID 48日 51星期六 53星期五 54星期二 56星期四 57星期三 58星期四 60星期三 62星期三'你跑的是什么版本的熊猫,星期几栏的dtypes是什么? – EdChum 2014-09-06 07:03:23

+0

但是62应该是星期四还是星期六?频率是必要的,而不是最大的字符串... – 2014-09-06 07:19:31

+0

名称:week_day,长度:389412,dtype:object – tejesh95 2014-09-06 07:24:42

回答

3

我一直在度假一个月,大脑功能不正常。如果我正确地理解了你,你想为每个ID出现最频繁的工作日。鉴于以下数据:

import pandas as pd 
data = {'id'   : [ 48, 48, 51, 53, 54, 56, 57, 57, 57, 58, 60, 60, 60, 60, 
         62, 62, 62, 62, 62, 62], 
     'booked_day' : [ 'Wednesday', 'Wednesday', 'Saturday', 'Friday', 'Tuesday', 
        'Thursday', 'Wednesday', 'Thursday', 'Thursday', 'Thursday', 
        'Monday', 'Monday', 'Tuesday', 'Wednesday', 'Monday', 
        'Wednesday', 'Thursday', 'Thursday', 'Saturday', 'Saturday']} 
DF = pd.DataFrame(data) 

我得到的解决方案,我想你想这样做:

DF.groupby('id').agg(lambda x : x.booked_day.value_counts().index[0]) 

    booked_day 
id 
48 Wednesday 
51 Saturday 
53  Friday 
54 Tuesday 
56 Thursday 
57 Thursday 
58 Thursday 
60  Monday 
62 Thursday