如何获取Pandas Series中出现频率最低的值
获取Pandas Series中出现频率最低的值
你已经用win.mode()[0]搞定了最常见值,那找最不常见的其实可以用value_counts()结合idxmin()来实现,思路很直接:
- 首先用
value_counts()统计每个值的出现频率,这个方法默认会按频率从高到低排序,返回的Series里索引是原序列的唯一值,值是对应的出现次数。 - 然后调用
idxmin(),它会返回频率最小的那个索引(也就是原Series里的目标值),如果有多个值频率相同且都是最低的,它会返回第一个遇到的,正好符合你“任意打破平局”的要求。
完整代码示例
import pandas as pd # 你的示例序列 win = pd.Series([0,1,2,2,2,0,0,2,2,0]) # 获取最常见值(你已经实现的部分) most_common = win.mode()[0] # 获取最不常见值 frequency_counts = win.value_counts() least_common = frequency_counts.idxmin() print(f"出现频率最高的值: {most_common}") # 输出 2 print(f"出现频率最低的值: {least_common}") # 输出 1
额外说明
如果之后你需要获取所有出现频率最低的值(而不是只取一个),可以这样写:
min_freq = frequency_counts.min() all_least_common = frequency_counts[frequency_counts == min_freq].index.tolist()
比如如果序列是[0,0,1,1,2],这个代码会返回[2];如果是[0,0,1,1],会返回[0,1]。
内容的提问来源于stack exchange,提问作者oli5679
相关产品推荐
相关产品推荐

