python - Pandas :摆脱多重索引

标签 python pandas dataframe

在对数据帧进行分组和计数后,我试图像这样删除多索引:

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/

相关文章:

python - Nexus 存储库管理器作为 pip 本地服务器无法正常工作

Visual-Studio 项目(或解决方案)的 Python 等效项

python - Pandas 行函数行迭代

scala - Spark : Extaract domain from email address in dataframe

python - 如何在 Python 中更新显示的值而不是每次都打印?

python - Scrapy 不进入解析方法

python - 如何从 "cell"对象的 "groupby"获取值?

python-3.x - 如何向 tkinter.Listbox 添加列?

python - 调用数据框的元素

python - 无法在 Pandas 中创建锯齿状数据框?