如何重置Pandas Series的索引并避免列名被替换?
Pandas中value_counts()后重置索引避免列名异常的解决方法
当对Series执行value_counts()后调用reset_index(),默认会把原类别列命名为index,计数列沿用原Series的列名,导致列名不符合预期。可以通过以下方法直接得到目标格式的结果:
方法一:使用reset_index()的name参数(推荐)
直接在reset_index()中通过name参数指定计数列的名称,原类别列会自动保留原Series的列名:
df = df[df['type']=='food']['fruit'].value_counts().reset_index(name='number')
执行后直接得到预期结果:
fruit number 0 apple 120 1 grape 110 2 orange 30
方法二:先转为DataFrame再重置索引
如果需要更灵活的列名控制,也可以先将value_counts()的结果转为DataFrame并指定计数列名,再重置索引并重命名类别列:
counts_series = df[df['type']=='food']['fruit'].value_counts() df = pd.DataFrame(counts_series, columns=['number']).reset_index().rename(columns={'index':'fruit'})
内容的提问来源于stack exchange,提问作者JasmineC
相关产品推荐
相关产品推荐

