Pandas 熊猫:从频率表中选择百分比最高的列
嗨,我有一个数据框,我想从频率表中选择百分比最高的列Pandas 熊猫:从频率表中选择百分比最高的列,pandas,Pandas,嗨,我有一个数据框,我想从频率表中选择百分比最高的列 d = {'c1':['a', 'a', 'b', 'b', 'c', 'c'], 'c2':['Low', 'High', 'Low', 'High', 'High', 'High']} dd = pd.DataFrame(data=d) dd.groupby('c1')['c2'].value_counts(normalize=True).mul(100) 它将返回一个频率表 c1 c2 a High 50.0
d = {'c1':['a', 'a', 'b', 'b', 'c', 'c'], 'c2':['Low', 'High', 'Low', 'High', 'High', 'High']}
dd = pd.DataFrame(data=d)
dd.groupby('c1')['c2'].value_counts(normalize=True).mul(100)
它将返回一个频率表
c1 c2
a High 50.0
Low 50.0
b High 50.0
Low 50.0
c High 100.0
Name: c2, dtype: float64
我想打印出百分比最高的c
100.0
我可以使用
max()
打印100.0
,但不知道如何打印c
让我们尝试重置索引并删除level=1,然后使用idxmax查找最大索引
dd.groupby('c1')['c2'].value_counts(normalize=True).mul(100).reset_index(level=1, drop=True).idxmax()
也许就这么做吧
dd.groupby('c1')['c2'].value_counts(normalize=True).idxmax()[0]
Out[102]: 'c'
回答得好。您可以删除
.mul(100)
,因为它是无用的。非常感谢。有没有办法打印出“c High 100.0”?抱歉,我应该在问题中更清楚地指定它。s=dd.groupby('c1')['c2'].value\u计数(normalize=True)。mul(100);s、 loc[[s.idxmax()]
谢谢@Quang Hoang,我没有注意到这个评论。