【问题标题】:Pandas Dataframe: Find unique value from one column which has the largest number of unique values in another columnPandas Dataframe:从另一列中具有最多唯一值的列中查找唯一值
【发布时间】:2022-02-01 20:19:37
【问题描述】:

我有以下熊猫数据框

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()

返回:

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

感谢您的帮助!

【问题讨论】:

    标签: python pandas group-by unique-values


    【解决方案1】:

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

    根据你的结果,调用两者:

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

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

    【讨论】:

    • 最好使用idx = result.idxmax() ; result[idx] 以避免不必要地计算最大值两次
    【解决方案2】:

    试试这个,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多