gpt4 book ai didi

Python 分组并计算列中的不同值并创建分隔列表

转载 作者:行者123 更新时间:2023-12-01 23:12:10 24 4
gpt4 key购买 nike

所以我已经找到/想出单独的答案来计算分组结果,以及返回唯一的分隔列表....但不是计算分组依据中的唯一值。

我想基于第一列创建一个仅包含唯一值的分隔字段,然后创建一个计算这些唯一值的字段。

import pandas as pd

companies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google', 'Microsoft', 'Google']
products = ['OS', 'Search', 'E-comm', 'X-box', 'Social Media', 'Android', 'OS', 'Search']
df = pd.DataFrame({'company' : companies, 'product':products })

#this creates the non-unique delimited list and counts total occurances
df2 = df.groupby('company').product.agg([('count', 'count'), ('product', ', '.join)])

#this creates the unique delimited list, but doesn't count occurances
df3 = (df.groupby('company')['product']
.apply(lambda x: list(x.unique()))
.reset_index())


#This is my desired output
company product count
0 Amazon [E-comm] 1
1 Facebook [Social Media] 1
2 Google [Search, Android] 2
3 Microsoft [OS, X-box] 2

我没能成功融合这两者,但我知道它应该相对简单明了?

最佳答案

你可以先drop_duplicates然后agg:

print (df.drop_duplicates().groupby("company", as_index=False)["product"].agg([list, "count"]))

list count
company
Amazon [E-comm] 1
Facebook [Social Media] 1
Google [Search, Android] 2
Microsoft [OS, X-box] 2

或者使用uniquenunique:

print (df.groupby("company")["product"].agg(["unique", "nunique"]))

unique nunique
company
Amazon [E-comm] 1
Facebook [Social Media] 1
Google [Search, Android] 2
Microsoft [OS, X-box] 2

关于Python 分组并计算列中的不同值并创建分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69711872/

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