熊猫:结合子集和过滤

时间:2018-01-11 13:24:53

标签: python pandas

假设我有以下数据框。

df = pd.DataFrame({'group':list('aaaabbbb'),
                   'hour':[1,3,3,2,5,6,6,2],
                   'id':[1,1,2,2,2,3,3,3]})
df

我想要做的是找到每组最常见的(模式)唯一小时。

以下情况让我得到每组的小时数。

df[['group','hour']].groupby(['group']).agg(lambda x:x.value_counts().index[0]).reset_index()

现在让我们说我想要小时。我似乎无法在一行中找到答案。

df[['group','hour']] & df.hour==3].groupby(['group']).agg(lambda x:x.value_counts().index[0]).reset_index()

这不起作用。关于如何组合小时== 3并在一行中一起选择列的任何想法

2 个答案:

答案 0 :(得分:2)

boolean indexing$value["plate"]

一起使用
loc

答案 1 :(得分:2)

value_count就是这样,但您也可以尝试mode

df.loc[df.hour==3, ['group','hour']].groupby(['group']).hour.apply(lambda x : x.mode()).reset_index()
Out[519]: 
  group  level_1  hour
0     a        0     3
相关问题