python - Pandas 在非重叠列上展平层次索引

标签 python pandas

我有一个数据框,我将索引设置为数据框的一列。这将创建一个分层列索引。我想将列展平到一个级别。类似于这个问题 - Python Pandas - How to flatten a hierarchical index in columns ,但是,列不重叠(即“id”不在层次索引的 0 级,而其他列在索引的 1 级)。

df = pd.DataFrame([(101,3,'x'), (102,5,'y')], columns=['id', 'A', 'B'])
df.set_index('id', inplace=True)

      A    B
id
101   3    x
102   5    y

所需的输出是展平的列,如下所示:

id    A    B
101   3    x
102   5    y

最佳答案

您误解了所见。

     A  B
id       
101  3  x
102  5  y

没有向您显示分层列索引。 id 是行索引的名称。为了向您显示索引的名称,pandas 正在为您放置那个空间。

您问题的答案取决于您真正想要或需要的东西。

正如 df 一样,您可以按照自己的方式将其转储到 csv:

print(df.to_csv(sep='\t'))

id  A   B
101 3   x
102 5   y

print(df.to_csv())

id,A,B
101,3,x
102,5,y

或者您可以更改 df 以便它以您喜欢的方式显示

print(df.rename_axis(None)) 

     A  B
101  3  x
102  5  y

请不要这样做!!!!
我用它来演示如何操作

我也可以保持索引不变,但操作列和行索引名称以打印您想要的方式。

print(df.rename_axis(None).rename_axis('id', 1))

id   A  B
101  3  x
102  5  y

但这已将列的索引命名为 id,这是没有意义的。

关于python - Pandas 在非重叠列上展平层次索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063580/

相关文章:

Python - openpyxl - 删除列表中的多个选项卡

python - Pandas 类别比较

python - Django 如何制作数据透视表?

python - 用 panda 转换 python 3.7 中的数据框

python - 如何在将字符串转换为 json 后访问 json 值

python - 根据列表的元素生成列表的列表

python - 将 python 稀疏矩阵导入 MATLAB

python - python - 从另一个线程启动后将systrace处理程序添加到python线程的方法?

python - Pandas:从元组生成器创建系列

Python 字典到 Pandas 数据框