【发布时间】:2017-05-15 20:43:15
【问题描述】:
我有以下形式的数据:
df = pd.DataFrame({
'group': [1, 1, 2, 3, 3, 3, 4],
'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)
# group param
# 0 1 a
# 1 1 a
# 2 2 b
# 3 3 NaN
# 4 3 a
# 5 3 a
# 6 4 NaN
组内的非空值始终相同。我想为每个组(它存在的地方)计算一次非空值,然后找到每个值的总计数。
我目前正在以以下(笨拙且低效)的方式执行此操作:
param = []
for _, group in df[df.param.notnull()].groupby('group'):
param.append(group.param.unique()[0])
print(pd.DataFrame({'param': param}).param.value_counts())
# a 2
# b 1
我确信有一种方法可以更干净且不使用循环,但我似乎无法解决。任何帮助将不胜感激。
【问题讨论】: