Pandas Dataframe:从一列中查找唯一值,该列在另一列中具有最多的唯一值

Pandas Dataframe: Find unique value from one column which has the largest number of unique values in another column

我有以下 pandas 数据框

df = pd.DataFrame([[99, 88, 88, 66, 66, 99, 66, 77, 77, 77, 66, 66, 99, 99], list('DAABBBBABCBDDD'), ['***','**','****','*','***','*','**','***','*','*','****','**','**','****']]).T
df.columns = ['col1','col2','col3']

假设col1是公司,col2是产品类型。我在找产品种类最多的公司

所以我正在寻找 col1 中的哪个唯一值在 col2 中具有最多的唯一值

我试过以下方法:

df.groupby(['col1'])['col2'].nunique()

哪个returns:

col1
66    2
77    3
88    1
99    2

现在我想从 col1 中获取 col2 中值最高的值。即:

77    3

我试过了

df.groupby(['col2'])['col1'].nunique().max()

但是我只收到 col2 中唯一值的最大值

3

相反,我想知道 col2 中的最大值以及它属于 col1 中的哪个值。即

 77    3

感谢您的帮助!

I would like to know both the max value from col2 and to which value in col1 this belongs.

根据您的结果,同时调用:

result = df.groupby(['col1'])['col2'].nunique()
result.idxmax()  # 77
result.max()  # 3

您也可以在调用之前将其转换为 DataFrame .loc[lambda d: d.idxmax()],但我不知道您为什么要这样做。

试试这个,

grouped=pd.DataFrame(df.groupby(['col1'])['col2'].nunique()).reset_index()
grouped[grouped['col2'] == grouped["col2"].max()]