gpt4 book ai didi

python - 使用 pandas groupby 计算唯一值

转载 作者:IT老高 更新时间:2023-10-28 20:50:23 25 4
gpt4 key购买 nike

我有以下形式的数据:

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

我确信有一种方法可以更干净且不使用循环,但我似乎无法解决。任何帮助将不胜感激。

最佳答案

我认为你可以使用 SeriesGroupBy.nunique :

print (df.groupby('param')['group'].nunique())
param
a 2
b 1
Name: group, dtype: int64

unique 的另一种解决方案,然后由 DataFrame.from_records 创建新的 df , 由 stack reshape 为 Series最后 value_counts :

a = df[df.param.notnull()].groupby('group')['param'].unique()
print (pd.DataFrame.from_records(a.values.tolist()).stack().value_counts())
a 2
b 1
dtype: int64

关于python - 使用 pandas groupby 计算唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com