我有一个数据框,我将索引设置为数据框的一列。这将创建一个分层列索引。我想将列展平到一个级别。类似于这个问题 - 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/