分组和计数后,我试图删除这样的多索引:
df = df[['CID','FE', 'FID']].groupby(by=['CID','FE']).count()
.unstack().reset_index()
打印列(df.colums
)表明它仍然是MultiIndex。
MultiIndex(levels=[['FID', 'CID'], [...]]
我无法通过CID
df['CID']
答案 0 :(得分:8)
我认为您需要将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
答案 1 :(得分:0)
这应该摆脱CID的MultiIndex并允许您通过df [' CID']
访问它df = df.rename(columns={('CID',''):'CID'})