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()]
我有以下 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()]