数据样本如下所示:
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
这是出乎意料的。
您能帮我找到数据集中每个ID最频繁的工作日吗?
+1,如果你已经弄清楚熊猫如何解释并显示"无用"值作为输出并且不会给出错误。
非常感谢您的任何见解!
答案 0 :(得分: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