pandas 无法重置索引,因为名称存在 [英] Pandas unable to reset index because name exist
本文介绍了 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屋!
查看全文