在对数据帧进行分组和计数后,我试图像这样删除多索引:
df = df[['CID','FE', 'FID']].groupby(by=['CID','FE']).count()
.unstack().reset_index()
打印列 (df.colums
) 表明它仍然是一个 MultiIndex
。
MultiIndex(levels=[['FID', 'CID'], [...]]
我无法通过 df['CID']
访问列 CID
。
最佳答案
我认为如果有必要,您需要将 MultiIndex
转换为 Index
:
df.columns = df.columns.map(''.join)
或者如果需要删除级别使用droplevel
:
df.columns = df.columns.droplevel(0)
如果需要访问值可以使用 xs
:
df = df.xs('CID', axis=1, level=1)
您还可以检查:
What is the difference between size and count in pandas?
编辑:
要删除 MultiIndex 是 ['FID']
选择的另一种解决方案。
df = df.groupby(by=['CID','FE'])['FID'].count().unstack().reset_index()
示例(还添加了 rename_axis
以获得更好的输出):
df = pd.DataFrame({'CID':[2,2,3],
'FE':[5,5,6],
'FID':[1,7,9]})
print (df)
CID FE FID
0 2 5 1
1 2 5 7
2 3 6 9
df = df.groupby(by=['CID','FE'])['FID']
.count()
.unstack()
.reset_index()
.rename_axis(None, axis=1)
print (df)
CID 5 6
0 2 2.0 NaN
1 3 NaN 1.0
关于python - Pandas :摆脱多重索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023770/