Pandas群数中位数

2024-03-29 07:42:50 发布

您现在位置:Python中文网/ 问答频道 /正文

g  | val
1     a
1     ''
2     b
2     ''
2     c
3    ''

我有一个数据框groupby要在每组中选择非值的中间值('g')。如何在熊猫身上做到这一点?在


Tags: 数据valgroupby非值
3条回答

您只需将框架切片,排除val列中的空值,然后使用groupby并计算中值。在

df[df['val']!=''].groupby('g').val.count().median()

这是你需要的吗?(Count不计算NaN,这就是为什么我们将“”替换为np.nan

df.val=df.val.replace('',np.nan)
df
Out[243]: 
   g  val
0  1    a
1  1  NaN
2  2    b
3  2  NaN
4  2    c
5  3  NaN

df.groupby('g').val.count().median()
Out[245]: 1.0

groupby前筛选

^{pr2}$

另一种方法是使用^{}函数:

# inside apply, we can filter values
df.groupby('g')['val'].apply(lambda x: x[x!= ''].count()).median()
Out[2]: 1.0

相关问题 更多 >