如何在pandas.Series.value_counts结果中删除指定键值对
解决方案
没问题,这事儿超简单,咱们几步就能搞定,而且绝对不会碰你的原始数据集~
首先,value_counts()返回的是一个Pandas Series对象,我们可以直接对这个统计结果做过滤操作,完全不会影响原始的DataFrame。
第一步:移除键为0的条目
你可以用drop()方法直接删除指定的标签(也就是键0),生成一个新的过滤后的Series:
# 先生成频率占比统计结果 df_product = df.product.value_counts(normalize=True) * 100 # 删除键为0的条目,原df和原df_product都不会被改动 filtered_product = df_product.drop(0)
如果你不需要保留原始的df_product,也可以直接覆盖它:
df_product = df.product.value_counts(normalize=True) * 100 df_product = df_product.drop(0)
第二步:把键和频率转成列表
过滤完成后,就可以把Series的索引(也就是原来的键)和对应的值分别转成列表了:
# 获取过滤后的键列表 keys_list = filtered_product.index.to_list() # 获取对应的频率占比列表 values_list = filtered_product.values.to_list()
要是你已经覆盖了df_product,直接用df_product.index.to_list()和df_product.values.to_list()就行。
小提示:验证结果
可以打印过滤后的Series确认一下键0已经被移除:
print(filtered_product)
这样操作下来,原始数据集df完全不受影响,咱们只是处理了统计后的结果而已~
内容的提问来源于stack exchange,提问作者JA-pythonista
相关产品推荐
相关产品推荐

