pandas 无法重置索引,因为名称存在 [英] Pandas unable to reset index because name exist

查看:87
本文介绍了 pandas 无法重置索引,因为名称存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个多级熊猫数据框,我正在尝试对其进行调整.我使用 reset_index 但它给我错误名称已经存在.

I have a multi-level pandas dataframe which im trying to level. I use reset_index but its giving me error that the name already exist.

我不想使用 reset_index(drop=True) 因为我想保留其中一个列名.

I dont want to use reset_index(drop=True) because i want to keep one of the column names still.

我想要作为我的新数据框:

i want as my new dataframe:

国家,listing_neighborhood,计数

现在,

df.columns 只给出 count.

我的代码:

df.columns = ['count']
df.reset_index() -> gives error that `ValueError: cannot insert country, already exists`

我也试过:

df.columns.droplevel(0) ->给出错误 'Index' 对象没有属性 'droplevel'

推荐答案

您需要删除第一个重复级别:

You need remove first duplicated level:

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'F':list('aaabbb')
})

df = (df.set_index(['A','F','C'])
        .rename_axis(['country','country','listing_neighborhood'])
        .rename(columns={'B':'count'}))

print (df)
                                      count
country country listing_neighborhood       
a       a       7                         4
b       a       8                         5
c       a       9                         4
d       b       4                         5
e       b       2                         5
f       b       3                         4

df = df.reset_index(level=0, drop=True).reset_index()
print (df)
  country  listing_neighborhood  count
0       a                     7      4
1       a                     8      5
2       a                     9      4
3       b                     4      5
4       b                     2      5
5       b                     3      4

或者:

df = df.droplevel(0).reset_index()

这篇关于 pandas 无法重置索引,因为名称存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆