Pandas:如何获取列中出现次数等于N的目标数值
解决方法:获取DataFrame指定列中出现次数等于N的数值
问题背景
给定如下DataFrame:
import pandas as pd df = pd.DataFrame({ 'a': [0, 1, 2], 'b': [1, 2, 3], 'c': [2, 3, 1], 'd': [3, 0, 4], 'e': [4, 4, 0] })
需求:获取指定列中出现次数等于N的数值,例如:
- 列"e"中出现2次的数值,结果应为
[4] - 列"d"中出现1次的数值,结果应为
[3,0,4]
当前使用df['e'].value_counts() == 2得到布尔值Series,希望直接获取对应为True的数值。
具体实现
可以通过以下步骤直接获取目标数值:
- 对指定列执行
value_counts(),得到各数值的出现次数 - 筛选出次数等于N的行
- 提取这些行的索引(即目标数值),转为列表
示例代码
示例1:获取列"e"中出现2次的数值
n = 2 # 筛选次数等于n的数值,转成列表 result_e = df['e'].value_counts()[df['e'].value_counts() == n].index.tolist() print(result_e) # 输出: [4]
示例2:获取列"d"中出现1次的数值
n = 1 result_d = df['d'].value_counts()[df['d'].value_counts() == n].index.tolist() print(result_d) # 输出: [3, 0, 4]
简化写法
也可以把逻辑封装成一个函数,方便重复调用:
def get_values_by_count(df, col_name, n): count_series = df[col_name].value_counts() return count_series[count_series == n].index.tolist() # 调用函数 print(get_values_by_count(df, 'e', 2)) # [4] print(get_values_by_count(df, 'd', 1)) # [3, 0, 4]
内容的提问来源于stack exchange,提问作者ArieAI
相关产品推荐
相关产品推荐

