如何从Pandas Series提取DataFrame列中0和1的出现频次
解决方法:将value_counts结果存入指定变量
嘿,这个需求很常见,我给你分享几种靠谱的实现方式,你可以根据场景选择:
方法1:直接按值索引(最稳妥)
value_counts()返回的Series,其索引就是原数据中的取值(这里是0和1),所以直接通过索引就能精准获取对应频次,完全不依赖排序:
import pandas as pd df = pd.DataFrame({'A':[0,0,1,0,1]}) # 先获取频次统计结果 counts = df['A'].value_counts() # 按值索引存入变量 zeros = counts[0] ones = counts[1] print(zeros) # 输出3 print(ones) # 输出2
方法2:用.get()避免KeyError(更健壮)
如果不确定你的数据里一定存在0或1(比如某些场景下可能缺失其中一个值),可以用.get()方法设置默认值,这样不会抛出KeyError:
zeros = counts.get(0, 0) # 若0不存在,返回默认值0 ones = counts.get(1, 0) # 若1不存在,返回默认值0
方法3:转成字典再取值(直观易懂)
也可以把统计后的Series转换成字典,然后按键取值,逻辑和方法1一致:
count_dict = counts.to_dict() zeros = count_dict[0] ones = count_dict[1]
小提示
别用counts.iloc[0]或者counts.iloc[1]这种按位置索引的方式!因为value_counts()默认是降序排列的,一旦你的数据里1的频次超过0,位置就会颠倒,导致取值错误。按值索引才是最可靠的方案~
内容的提问来源于stack exchange,提问作者cph_sto
相关产品推荐
相关产品推荐

